From 5a13f11a947cc40a0af549896bee3264a0837948 Mon Sep 17 00:00:00 2001
From: Michael Pierce <m.edward.pierce@gmail.com>
Date: Fri, 6 Nov 2020 20:54:33 -0600
Subject: [PATCH 01/74] server/methods.js: set null as genesis does not define

---
 imports/api/chain/server/methods.js | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/imports/api/chain/server/methods.js b/imports/api/chain/server/methods.js
index e8a9cfe73..f2f6e63af 100644
--- a/imports/api/chain/server/methods.js
+++ b/imports/api/chain/server/methods.js
@@ -193,10 +193,10 @@ Meteor.methods({
                 },
                 mint: genesis.app_state.mint,
                 distr: {
-                    communityTax: distr.community_tax,
-                    baseProposerReward: distr.base_proposer_reward,
-                    bonusProposerReward: distr.bonus_proposer_reward,
-                    withdrawAddrEnabled: distr.withdraw_addr_enabled
+                    communityTax: null, // distr.community_tax,
+                    baseProposerReward: null, // distr.base_proposer_reward,
+                    bonusProposerReward: null, // distr.bonus_proposer_reward,
+                    withdrawAddrEnabled: null, // distr.withdraw_addr_enabled
                 },
                 gov: {
                     startingProposalId: 0,
@@ -205,7 +205,7 @@ Meteor.methods({
                     tallyParams: {}
                 },
                 slashing:{
-                    params: genesis.app_state.slashing.params
+                    params: null //
                 },
                 supply: genesis.app_state.supply,
                 crisis: genesis.app_state.crisis

From 8db10c2d70c33f2ee6e96acd269387b1b9bbce0f Mon Sep 17 00:00:00 2001
From: Michael Pierce <m.edward.pierce@gmail.com>
Date: Fri, 6 Nov 2020 20:57:33 -0600
Subject: [PATCH 02/74] client/styles:  sif gold

---
 client/styles.scss | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/client/styles.scss b/client/styles.scss
index 014de2206..1f4d75646 100644
--- a/client/styles.scss
+++ b/client/styles.scss
@@ -1,4 +1,4 @@
-$forbole-red: #bd081c;
+$forbole-red: #CAA93A;
 $primary: $forbole-red !default;
 
 @import "materia/variables";

From 81f2479ffe7aafe2c86a2ba47b75910e6a37c612 Mon Sep 17 00:00:00 2001
From: Michael Pierce <m.edward.pierce@gmail.com>
Date: Fri, 6 Nov 2020 20:57:45 -0600
Subject: [PATCH 03/74] .meteor: update some versions

---
 .meteor/packages |  2 +-
 .meteor/release  |  2 +-
 .meteor/versions | 20 ++++++++++----------
 3 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/.meteor/packages b/.meteor/packages
index 233789e98..6bb8758b3 100644
--- a/.meteor/packages
+++ b/.meteor/packages
@@ -10,7 +10,7 @@ mongo@1.10.0                   # The database Meteor supports right now
 reactive-var@1.0.11            # Reactive variable for tracker
 tracker@1.2.0                 # Meteor's client-side reactive programming library
 
-standard-minifier-css@1.6.0   # CSS minifier run for production mode
+standard-minifier-css@1.6.1   # CSS minifier run for production mode
 standard-minifier-js@2.6.0    # JS minifier run for production mode
 es5-shim@4.8.0                # ECMAScript 5 compatibility for older browsers
 ecmascript@0.14.3              # Enable ECMAScript2015+ syntax in app code
diff --git a/.meteor/release b/.meteor/release
index 3ea26528c..019e3aefb 100644
--- a/.meteor/release
+++ b/.meteor/release
@@ -1 +1 @@
-METEOR@1.10.2
+METEOR@1.11.1
diff --git a/.meteor/versions b/.meteor/versions
index c5765ea1b..a86eaa1ad 100644
--- a/.meteor/versions
+++ b/.meteor/versions
@@ -6,7 +6,7 @@ base64@1.0.12
 binary-heap@1.0.11
 bkruse:pace@0.5.1
 blaze-tools@1.0.10
-boilerplate-generator@1.7.0
+boilerplate-generator@1.7.1
 caching-compiler@1.2.2
 caching-html-compiler@1.1.3
 callback-hook@1.3.0
@@ -18,11 +18,11 @@ ddp-common@1.4.0
 ddp-server@2.3.2
 deps@1.0.12
 diff-sequence@1.1.1
-dynamic-import@0.5.2
+dynamic-import@0.5.3
 ecmascript@0.14.3
 ecmascript-runtime@0.7.0
-ecmascript-runtime-client@0.10.0
-ecmascript-runtime-server@0.9.0
+ecmascript-runtime-client@0.11.0
+ecmascript-runtime-server@0.10.0
 ejson@1.1.1
 es5-shim@4.8.0
 fetch@0.1.1
@@ -45,8 +45,8 @@ meteor@1.9.3
 meteor-base@1.4.0
 meteortesting:browser-tests@1.3.4
 meteortesting:mocha@1.1.5
-meteortesting:mocha-core@7.0.1
-minifier-css@1.5.2
+meteortesting:mocha-core@7.2.0
+minifier-css@1.5.3
 minifier-js@2.6.0
 minimongo@1.6.0
 mobile-experience@1.1.0
@@ -58,11 +58,11 @@ mongo@1.10.0
 mongo-decimal@0.1.1
 mongo-dev-server@1.1.0
 mongo-id@1.0.7
-npm-mongo@3.7.1
+npm-mongo@3.8.1
 ordered-dict@1.1.0
 promise@0.11.2
 random@1.2.0
-react-meteor-data@2.1.1
+react-meteor-data@2.1.2
 reactive-var@1.0.11
 reload@1.3.0
 retry@1.1.0
@@ -72,14 +72,14 @@ server-render@0.3.1
 shell-server@0.5.0
 socket-stream-client@0.3.1
 spacebars-compiler@1.1.3
-standard-minifier-css@1.6.0
+standard-minifier-css@1.6.1
 standard-minifier-js@2.6.0
 static-html@1.2.2
 templating-tools@1.1.2
 tracker@1.2.0
 typescript@3.7.6
 underscore@1.0.10
-universe:i18n@1.30.0
+universe:i18n@1.31.0
 url@1.3.1
 webapp@1.9.1
 webapp-hashing@1.0.9

From c6f1db564b78512ef1c9599279ea2174a07c89fd Mon Sep 17 00:00:00 2001
From: Michael Pierce <m.edward.pierce@gmail.com>
Date: Fri, 6 Nov 2020 21:32:10 -0600
Subject: [PATCH 04/74] sif-testnet-settings.json

---
 sif-testnet-settings.json | 76 +++++++++++++++++++++++++++++++++++++++
 1 file changed, 76 insertions(+)
 create mode 100644 sif-testnet-settings.json

diff --git a/sif-testnet-settings.json b/sif-testnet-settings.json
new file mode 100644
index 000000000..a1f5e7b45
--- /dev/null
+++ b/sif-testnet-settings.json
@@ -0,0 +1,76 @@
+{
+    "public":{
+        "chainName": "Sifnode",
+        "chainId": "monkey-bars",
+        "gtm": "{Add your Google Tag Manager ID here}",
+        "slashingWindow": 10000,
+        "uptimeWindow": 250,
+        "initialPageSize": 30,
+        "secp256k1": false,
+        "bech32PrefixAccAddr": "sif",
+        "bech32PrefixAccPub": "sifpub",
+        "bech32PrefixValAddr": "sifvaloper",
+        "bech32PrefixValPub": "sifvaloperpub",
+        "bech32PrefixConsAddr": "sifvalcons",
+        "bech32PrefixConsPub": "sifvalconspub",
+        "bondDenom": "trwn",
+        "powerReduction": 1000000,
+        "coins": [
+            {
+                "denom": "trwn",
+                "displayName": "TRWN",
+                "displayNamePlural": "TRWNS",
+                "fraction": 1000000
+            },           
+            {
+                "denom": "cusdt",
+                "displayName": "CUSDT",
+                "displayNamePlural": "CUSDTS",
+                "fraction": 1000000
+            },           
+            {
+                "denom": "cusdc",
+                "displayName": "CUSDC",
+                "displayNamePlural": "CUSDC",
+                "fraction": 1000000
+            },           
+            {
+                "denom": "clink",
+                "displayName": "CLINK",
+                "displayNamePlural": "CLINKS",
+                "fraction": 1000000
+            },           
+            {
+                "denom": "chot",
+                "displayName": "CHOT",
+                "displayNamePlural": "CHOTS",
+                "fraction": 1000000
+            }
+
+        ],
+        "gasPrice": 0.02,
+        "coingeckoId": "sif"
+    },
+    "genesisFile": "https://raw.githubusercontent.com/Sifchain/networks/feature/genesis/testnet/monkey-bars-testnet-3/genesis.json",
+    "remote":{
+        "rpc":"http://35.166.247.98:26657",
+        "lcd":"http://35.166.247.98:1317"
+    },
+    "debug": {
+        "startTimer": true,
+        "readGenesis": true
+    },
+    "params":{
+        "startHeight": 0,
+        "defaultBlockTime": 5000,
+        "blockInterval": 15000,
+        "consensusInterval": 1000,
+        "statusInterval":7500,
+        "signingInfoInterval": 1800000,
+        "proposalInterval": 5000,
+        "missedBlocksInterval": 60000,
+        "delegationInterval": 900000
+    }
+}
+
+

From 6733a35962bae0433eb81d111ac331d39263bd5c Mon Sep 17 00:00:00 2001
From: 59023g <m.edward.pierce@gmail.com>
Date: Wed, 11 Nov 2020 09:40:22 -0600
Subject: [PATCH 05/74] Update CHANGELOG.md

---
 CHANGELOG.md | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 09a0d3bfc..9495d54bb 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,9 @@
 # Changelog
 
+* Sif gold color style client/styles
+* server/methods.js fix for missing Sif (monkey-bars) genesis values
+* testnet-settings
+
 ## [Unreleased]
 
 * Bump Meteor to v1.10.2 and update some dependency pcakges with security issues

From 8a7f427c62d8649bee6d816cd59264be02f27870 Mon Sep 17 00:00:00 2001
From: Ilche Bedelovski <ilche.bedelovski@gmail.com>
Date: Tue, 17 Nov 2020 20:19:58 +0100
Subject: [PATCH 06/74] Github Actions workflow

---
 .github/workflows/testnet.yml | 25 +++++++++++++++++++++++++
 Dockerfile                    |  4 +++-
 2 files changed, 28 insertions(+), 1 deletion(-)
 create mode 100644 .github/workflows/testnet.yml

diff --git a/.github/workflows/testnet.yml b/.github/workflows/testnet.yml
new file mode 100644
index 000000000..21972ccf2
--- /dev/null
+++ b/.github/workflows/testnet.yml
@@ -0,0 +1,25 @@
+name: Publish Testnet Image for block-explorer
+
+on:
+  push:
+    branches: develop
+
+jobs:
+  testnet:
+    name: testnet
+    runs-on: ubuntu-latest
+    steps:
+      - name: Check out the repo
+        uses: actions/checkout@v2
+
+      - name: Login to Docker Hub
+        run: |
+            docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_TOKEN }}
+
+      - name: Build images
+        run: |
+            docker build -t sifchain/block-explorer:testnet .
+
+      - name: Push images
+        run: |
+            docker push sifchain/block-explorer:testnet
diff --git a/Dockerfile b/Dockerfile
index 540dbf910..f782d6621 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -32,7 +32,9 @@ ENV SCRIPTS_FOLDER /docker
 
 RUN apk --no-cache add \
     bash \
-    ca-certificates
+    ca-certificates \
+    curl \
+    jq
 
 COPY --from=1 $SCRIPTS_FOLDER $SCRIPTS_FOLDER/
 

From eabe8cfdc39698afd04baa6c7dde90fdc67f681c Mon Sep 17 00:00:00 2001
From: Ilche Bedelovski <ilche.bedelovski@gmail.com>
Date: Thu, 19 Nov 2020 09:56:40 +0100
Subject: [PATCH 07/74] Feature branch added as a trigger

---
 .github/workflows/testnet.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/testnet.yml b/.github/workflows/testnet.yml
index 21972ccf2..6395a6487 100644
--- a/.github/workflows/testnet.yml
+++ b/.github/workflows/testnet.yml
@@ -2,7 +2,7 @@ name: Publish Testnet Image for block-explorer
 
 on:
   push:
-    branches: develop
+    branches: feature/github-actions
 
 jobs:
   testnet:

From 47b4b02228ba71ef6debc4b00e3af159abdda139 Mon Sep 17 00:00:00 2001
From: Ilche Bedelovski <ilche.bedelovski@gmail.com>
Date: Thu, 19 Nov 2020 10:11:23 +0100
Subject: [PATCH 08/74] develop branch as a trigger

---
 .github/workflows/testnet.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/testnet.yml b/.github/workflows/testnet.yml
index 6395a6487..21972ccf2 100644
--- a/.github/workflows/testnet.yml
+++ b/.github/workflows/testnet.yml
@@ -2,7 +2,7 @@ name: Publish Testnet Image for block-explorer
 
 on:
   push:
-    branches: feature/github-actions
+    branches: develop
 
 jobs:
   testnet:

From 2ced3832115c930f685e62ca24313266cecfced1 Mon Sep 17 00:00:00 2001
From: Brent McDowell <git@theceleritas.com>
Date: Thu, 18 Mar 2021 11:58:10 +0800
Subject: [PATCH 09/74] Updated release workflow.

---
 .github/workflows/release.yml | 36 +++++++++++++++++++++++++++++++++++
 .github/workflows/testnet.yml | 25 ------------------------
 2 files changed, 36 insertions(+), 25 deletions(-)
 create mode 100644 .github/workflows/release.yml
 delete mode 100644 .github/workflows/testnet.yml

diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
new file mode 100644
index 000000000..dbdff2a97
--- /dev/null
+++ b/.github/workflows/release.yml
@@ -0,0 +1,36 @@
+name: Release
+
+on:
+  release:
+    types: [published]
+
+jobs:
+  release:
+    name: Release
+    runs-on: ubuntu-latest
+    steps:
+      - name: Check out the repo
+        uses: actions/checkout@v2
+
+      - name: Login to Docker Hub
+        run: docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_TOKEN }}
+
+      - name: Inject slug/short variables
+        uses: rlespinasse/github-slug-action@v2.x
+
+      - if: contains(github.ref, 'testnet')
+        run: |
+          echo "CHAINNET=testnet" >> "$GITHUB_ENV"
+
+      - if: contains(github.ref, 'mainnet')
+        run: |
+          echo "CHAINNET=mainnet" >> "$GITHUB_ENV"
+
+      - name: Build docker image
+        run: |
+          echo ${{ env.CHAINNET }}
+          docker build -t sifchain/block-explorer:${{ env.CHAINNET }} .
+
+      - name: Push docker images
+        run: |
+          docker push sifchain/block-explorer:${{ env.CHAINNET }}
diff --git a/.github/workflows/testnet.yml b/.github/workflows/testnet.yml
deleted file mode 100644
index 21972ccf2..000000000
--- a/.github/workflows/testnet.yml
+++ /dev/null
@@ -1,25 +0,0 @@
-name: Publish Testnet Image for block-explorer
-
-on:
-  push:
-    branches: develop
-
-jobs:
-  testnet:
-    name: testnet
-    runs-on: ubuntu-latest
-    steps:
-      - name: Check out the repo
-        uses: actions/checkout@v2
-
-      - name: Login to Docker Hub
-        run: |
-            docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_TOKEN }}
-
-      - name: Build images
-        run: |
-            docker build -t sifchain/block-explorer:testnet .
-
-      - name: Push images
-        run: |
-            docker push sifchain/block-explorer:testnet

From e143dbd42385402eff4e68ab8f4c1fd1a74b91f9 Mon Sep 17 00:00:00 2001
From: intl-man <theinternationalman079@gmail.com>
Date: Thu, 18 Mar 2021 12:00:46 +0800
Subject: [PATCH 10/74] Removed the slug actions.

---
 .github/workflows/release.yml | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index dbdff2a97..b7974a377 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -15,9 +15,6 @@ jobs:
       - name: Login to Docker Hub
         run: docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_TOKEN }}
 
-      - name: Inject slug/short variables
-        uses: rlespinasse/github-slug-action@v2.x
-
       - if: contains(github.ref, 'testnet')
         run: |
           echo "CHAINNET=testnet" >> "$GITHUB_ENV"

From ace39ba36e987f34ec8e41924e1bed6919e0ce74 Mon Sep 17 00:00:00 2001
From: 59023g <5235538+59023g@users.noreply.github.com>
Date: Mon, 22 Mar 2021 17:05:01 -0500
Subject: [PATCH 11/74] ui/{Block, Transactions, TransactionTabs}: include
 clpTxs, pegTxs

---
 imports/ui/blocks/Block.jsx                 | 12 ++++-
 imports/ui/components/Transactions.jsx      |  8 +++-
 imports/ui/transactions/TransactionTabs.jsx | 52 ++++++++++++++++++++-
 3 files changed, 67 insertions(+), 5 deletions(-)

diff --git a/imports/ui/blocks/Block.jsx b/imports/ui/blocks/Block.jsx
index c018139a0..d910b193d 100644
--- a/imports/ui/blocks/Block.jsx
+++ b/imports/ui/blocks/Block.jsx
@@ -20,19 +20,25 @@ export default class Block extends Component{
             distributionTxs: {},
             governanceTxs: {},
             slashingTxs: {},
+            clpTxs: {},
+            pegTxs: {},
+
         };
     }
 
     componentDidUpdate(prevProps){
         if (this.props != prevProps){
             if (this.props.transactionsExist){
-                // console.log("have txs.");
+                // console.log("have txs.", this.props);
                 this.setState({
                     transferTxs: this.props.transferTxs,
                     stakingTxs: this.props.stakingTxs,
                     distributionTxs: this.props.distributionTxs,
                     governanceTxs: this.props.governanceTxs,
-                    slashingTxs: this.props.slashingTxs
+                    slashingTxs: this.props.slashingTxs,
+                    clpTxs: this.props.clpTxs,
+                    pegTxs: this.props.pegTxs
+
                 })
             }
         }
@@ -79,6 +85,8 @@ export default class Block extends Component{
                         distributionTxs={this.state.distributionTxs}
                         governanceTxs={this.state.governanceTxs}
                         slashingTxs={this.state.slashingTxs}
+                        clpTxs={this.state.clpTxs}
+                        pegTxs={this.state.pegTxs}
                     />
                 </Container>
             }
diff --git a/imports/ui/components/Transactions.jsx b/imports/ui/components/Transactions.jsx
index 2e8ced6c8..2b4ead365 100644
--- a/imports/ui/components/Transactions.jsx
+++ b/imports/ui/components/Transactions.jsx
@@ -14,6 +14,8 @@ export default class ValidatorTransactions extends Component{
             distributionTxs: {},
             governanceTxs: {},
             slashingTxs: {},
+            clpTxs: {},
+            pegTxs: {}
         };  
     }
 
@@ -26,7 +28,9 @@ export default class ValidatorTransactions extends Component{
                     stakingTxs: this.props.stakingTxs,
                     distributionTxs: this.props.distributionTxs,
                     governanceTxs: this.props.governanceTxs,
-                    slashingTxs: this.props.slashingTxs
+                    slashingTxs: this.props.slashingTxs,
+                    clpTxs: this.props.clpTxs,
+                    pegTxs: this.props.pegTxs
                 })
             }
         }
@@ -43,6 +47,8 @@ export default class ValidatorTransactions extends Component{
                 distributionTxs={this.state.distributionTxs}
                 governanceTxs={this.state.governanceTxs}
                 slashingTxs={this.state.slashingTxs}
+                clpTxs={this.state.clpTxs}
+                pegTxs={this.state.pegTxs}                
             />
         }
         else {
diff --git a/imports/ui/transactions/TransactionTabs.jsx b/imports/ui/transactions/TransactionTabs.jsx
index 712b667cc..2ef5d2230 100644
--- a/imports/ui/transactions/TransactionTabs.jsx
+++ b/imports/ui/transactions/TransactionTabs.jsx
@@ -16,7 +16,9 @@ export default class TransactionTabs extends Component{
             stakingTxs: {},
             distributionTxs: {},
             governanceTxs: {},
-            slashingTxs: {}
+            slashingTxs: {},
+            clpTxs: {},
+            pegTxs: {}
         }
     }
 
@@ -35,7 +37,9 @@ export default class TransactionTabs extends Component{
                 stakingTxs: this.props.stakingTxs,
                 distributionTxs: this.props.distributionTxs,
                 governanceTxs: this.props.governanceTxs,
-                slashingTxs: this.props.slashingTxs
+                slashingTxs: this.props.slashingTxs,
+                clpTxs: this.props.clpTxs,
+                pegTxs: this.props.pegTxs
             })    
         }
     }
@@ -85,6 +89,22 @@ export default class TransactionTabs extends Component{
                             <T>transactions.slashing</T> ({numbro(this.state.slashingTxs.length).format("0,0")})
                         </NavLink>
                     </NavItem>
+                    <NavItem>
+                        <NavLink
+                            className={classnames({ active: this.state.activeTab === 'tx-clp' })}
+                            onClick={() => { this.toggle('tx-clp'); }}
+                        >
+                            <T>transactions.clp</T> ({numbro(this.state.clpTxs.length).format("0,0")})
+                        </NavLink>
+                    </NavItem>
+                    <NavItem>
+                        <NavLink
+                            className={classnames({ active: this.state.activeTab === 'tx-peg' })}
+                            onClick={() => { this.toggle('tx-peg'); }}
+                        >
+                            <T>transactions.peg</T> ({numbro(this.state.pegTxs.length).format("0,0")})
+                        </NavLink>
+                    </NavItem>
                 </Nav>
                 <TabContent activeTab={this.state.activeTab}>
                     <TabPane tabId="tx-transfer">
@@ -157,6 +177,34 @@ export default class TransactionTabs extends Component{
                             </Col>
                         </Row>
                     </TabPane>
+                    <TabPane tabId="tx-clp">
+                        <Row>
+                            <Col>
+                                {(this.state.clpTxs.length > 0)?this.state.clpTxs.map((tx, i) => {
+                                    return <TransactionRow 
+                                        key={i} 
+                                        index={i} 
+                                        tx={tx} 
+                                        blockList
+                                    />
+                                }):''}
+                            </Col>
+                        </Row>
+                    </TabPane>
+                    <TabPane tabId="tx-peg">
+                        <Row>
+                            <Col>
+                                {(this.state.pegTxs.length > 0)?this.state.pegTxs.map((tx, i) => {
+                                    return <TransactionRow 
+                                        key={i} 
+                                        index={i} 
+                                        tx={tx} 
+                                        blockList
+                                    />
+                                }):''}
+                            </Col>
+                        </Row>
+                    </TabPane>                    
                 </TabContent>
             </CardBody>
         </Card>

From 6e6719bffd7c5bb7d04688f28ec6f54db0a2dfc8 Mon Sep 17 00:00:00 2001
From: 59023g <5235538+59023g@users.noreply.github.com>
Date: Mon, 22 Mar 2021 17:05:36 -0500
Subject: [PATCH 12/74] ui/{block,Transaction}Container: query mongo for more

---
 imports/ui/blocks/BlockContainer.js            | 14 ++++++++++++++
 imports/ui/components/TransactionsContainer.js | 14 ++++++++++++++
 2 files changed, 28 insertions(+)

diff --git a/imports/ui/blocks/BlockContainer.js b/imports/ui/blocks/BlockContainer.js
index 9e895e802..737f30356 100644
--- a/imports/ui/blocks/BlockContainer.js
+++ b/imports/ui/blocks/BlockContainer.js
@@ -37,6 +37,20 @@ export default BlockContainer = withTracker((props) => {
         blockExist,
         transactionsExist,
         block: blockExist ? block : {},
+        clpTxs: transactionsExist ? Transactions.find({
+            $or: [
+                {"tx.value.msg.type":"clp/Swap"},
+                {"tx.value.msg.type":"clp/AddLiquidity"},
+                {"tx.value.msg.type":"clp/CreatePool"},
+                {"tx.value.msg.type":"clp/RemoveLiquidity"}
+            ]
+        }).fetch() : {},
+        pegTxs: transactionsExist ? Transactions.find({
+            $or: [
+                {"tx.value.msg.type":"ethbridge/MsgLock"}, // unpeg?
+                {"tx.value.msg.type":"ethbridge/MsgCreateEthBridgeClaim"}, // peg: non-rowan (lock), rowan (burn)
+            ]
+        }).fetch() : {},        
         transferTxs: transactionsExist ? Transactions.find({
             $or: [
                 {"tx.value.msg.type":"cosmos-sdk/MsgSend"},
diff --git a/imports/ui/components/TransactionsContainer.js b/imports/ui/components/TransactionsContainer.js
index 0122e6445..bba4c8fae 100644
--- a/imports/ui/components/TransactionsContainer.js
+++ b/imports/ui/components/TransactionsContainer.js
@@ -27,6 +27,20 @@ export default TransactionsContainer = withTracker((props) => {
     return {
         loading,
         transactionsExist,
+        clpTxs: transactionsExist ? Transactions.find({
+            $or: [
+                {"tx.value.msg.type":"clp/Swap"},
+                {"tx.value.msg.type":"clp/AddLiquidity"},
+                {"tx.value.msg.type":"clp/CreatePool"},
+                {"tx.value.msg.type":"clp/RemoveLiquidity"}
+            ]
+        }).fetch() : {},
+        pegTxs: transactionsExist ? Transactions.find({
+            $or: [
+                {"tx.value.msg.type":"ethbridge/MsgLock"}, // unpeg?
+                {"tx.value.msg.type":"ethbridge/MsgCreateEthBridgeClaim"}, // peg: non-rowan (lock), rowan (burn)
+            ]
+        }).fetch() : {},           
         transferTxs: transactionsExist ? Transactions.find({
             $or: [
                 {"tx.value.msg.type":"cosmos-sdk/MsgSend"},

From 266da18d7bbb25f3e554cc796a0dce087eb72b31 Mon Sep 17 00:00:00 2001
From: 59023g <5235538+59023g@users.noreply.github.com>
Date: Mon, 22 Mar 2021 17:06:32 -0500
Subject: [PATCH 13/74] ui/{Activities,MsgType,Transaction,TransactionRow}:
 transaction display

---
 imports/ui/components/Activities.jsx       | 402 ++++++++++++++++-----
 imports/ui/components/MsgType.jsx          |   4 +-
 imports/ui/transactions/Transaction.jsx    | 254 +++++++++----
 imports/ui/transactions/TransactionRow.jsx | 183 +++++++---
 4 files changed, 638 insertions(+), 205 deletions(-)

diff --git a/imports/ui/components/Activities.jsx b/imports/ui/components/Activities.jsx
index 5173432ca..30900eba6 100644
--- a/imports/ui/components/Activities.jsx
+++ b/imports/ui/components/Activities.jsx
@@ -1,102 +1,338 @@
-import React, {Component } from 'react';
-import { MsgType } from './MsgType.jsx';
-import { Link } from 'react-router-dom';
-import Account from '../components/Account.jsx';
-import i18n from 'meteor/universe:i18n';
-import Coin from '/both/utils/coins.js'
-import JSONPretty from 'react-json-pretty';
-import _ from 'lodash';
+import React, { Component } from "react";
+import { MsgType } from "./MsgType.jsx";
+import { Link } from "react-router-dom";
+import Account from "../components/Account.jsx";
+import i18n from "meteor/universe:i18n";
+import Coin from "/both/utils/coins.js";
+import JSONPretty from "react-json-pretty";
+import _ from "lodash";
 
 const T = i18n.createComponent();
 
 MultiSend = (props) => {
-    return <div>
-        <p><T>activities.single</T> <MsgType type={props.msg.type} /> <T>activities.happened</T></p>
-        <p><T>activities.senders</T>
-            <ul>
-                {props.msg.value.inputs.map((data,i) =>{
-                    return <li key={i}><Account address={data.address}/> <T>activities.sent</T> {data.coins.map((coin, j) =>{
-                        return <span key={j} className="text-success">{new Coin(coin.amount, coin.denom).toString()}</span>
-                    })}
-                    </li>
+  return (
+    <div>
+      <p>
+        <T>activities.single</T> <MsgType type={props.msg.type} />{" "}
+        <T>activities.happened</T>
+      </p>
+      <p>
+        <T>activities.senders</T>
+        <ul>
+          {props.msg.value.inputs.map((data, i) => {
+            return (
+              <li key={i}>
+                <Account address={data.address} /> <T>activities.sent</T>{" "}
+                {data.coins.map((coin, j) => {
+                  return (
+                    <span key={j} className="text-success">
+                      {new Coin(coin.amount, coin.denom).toString()}
+                    </span>
+                  );
                 })}
-            </ul>
-            <T>activities.receivers</T>
-            <ul>
-                {props.msg.value.outputs.map((data,i) =>{
-                    return <li key={i}><Account address={data.address}/> <T>activities.received</T> {data.coins.map((coin,j) =>{
-                        return <span key={j} className="text-success">{new Coin(coin.amount, coin.denom).toString()}</span>
-                    })}</li>
+              </li>
+            );
+          })}
+        </ul>
+        <T>activities.receivers</T>
+        <ul>
+          {props.msg.value.outputs.map((data, i) => {
+            return (
+              <li key={i}>
+                <Account address={data.address} /> <T>activities.received</T>{" "}
+                {data.coins.map((coin, j) => {
+                  return (
+                    <span key={j} className="text-success">
+                      {new Coin(coin.amount, coin.denom).toString()}
+                    </span>
+                  );
                 })}
-            </ul>
-        </p>
+              </li>
+            );
+          })}
+        </ul>
+      </p>
     </div>
-}
+  );
+};
 
+function getCoinDecimals (symbol) {
+    // console.log(Meteor.settings.public.coins)
+    const coin =  Meteor.settings.public.coins.find((item) => {
+        return item.denom === symbol
+    })
+    return coin.fraction.toString().length - 1
+}
 export default class Activites extends Component {
-    constructor(props){
-        super(props);
+  constructor(props) {
+    super(props);
+  }
+
+  render() {
+    // console.log(this.props);
+    const msg = this.props.msg;
+    const events = [];
+    for (let i in this.props.events) {
+      events[this.props.events[i].type] = this.props.events[i].attributes;
     }
 
-    render(){
-        // console.log(this.props);
-        const msg = this.props.msg;
-        const events = [];
-        for (let i in this.props.events){
-            events[this.props.events[i].type] = this.props.events[i].attributes
-        }
-        
-        switch (msg.type){
-        // bank
-        case "cosmos-sdk/MsgSend":
-            let amount = '';
-            amount = msg.value.amount.map((coin) => new Coin(coin.amount, coin.denom).toString()).join(', ')
-            return <p><Account address={msg.value.from_address} /> {(this.props.invalid)?<T>activities.failedTo</T>:''}<MsgType type={msg.type} /> <span className="text-success">{amount}</span> <T>activities.to</T> <span className="address"><Account address={msg.value.to_address} /></span><T>common.fullStop</T></p>
-        case "cosmos-sdk/MsgMultiSend":
-            return <MultiSend msg={msg} />
+    switch (msg.type) {
+      // bank
+      case "cosmos-sdk/MsgSend":
+        let amount = "";
+        amount = msg.value.amount
+          .map((coin) => new Coin(coin.amount, coin.denom).toString())
+          .join(", ");
+        return (
+          <p>
+            <Account address={msg.value.from_address} />{" "}
+            {this.props.invalid ? <T>activities.failedTo</T> : ""}
+            <MsgType type={msg.type} />{" "}
+            <span className="text-success">{amount}</span> <T>activities.to</T>{" "}
+            <span className="address">
+              <Account address={msg.value.to_address} />
+            </span>
+            <T>common.fullStop</T>
+          </p>
+        );
+      case "cosmos-sdk/MsgMultiSend":
+        return <MultiSend msg={msg} />;
+
+      // staking
+      case "cosmos-sdk/MsgCreateValidator":
+        return (
+          <p>
+            <Account address={msg.value.delegator_address} />{" "}
+            {this.props.invalid ? <T>activities.failedTo</T> : ""}
+            <MsgType type={msg.type} /> <T>activities.operatingAt</T>{" "}
+            <span className="address">
+              <Account address={msg.value.validator_address} />
+            </span>{" "}
+            <T>activities.withMoniker</T>{" "}
+            <Link to="#">{msg.value.description.moniker}</Link>
+            <T>common.fullStop</T>
+          </p>
+        );
+      case "cosmos-sdk/MsgEditValidator":
+        return (
+          <p>
+            <Account address={msg.value.address} />{" "}
+            {this.props.invalid ? <T>activities.failedTo</T> : ""}
+            <MsgType type={msg.type} />
+          </p>
+        );
+      case "cosmos-sdk/MsgDelegate":
+        return (
+          <p>
+            <Account address={msg.value.delegator_address} />{" "}
+            {this.props.invalid ? <T>activities.failedTo</T> : ""}
+            <MsgType type={msg.type} />{" "}
+            <span className="text-warning">
+              {new Coin(
+                msg.value.amount.amount,
+                msg.value.amount.denom
+              ).toString(6)}
+            </span>{" "}
+            <T>activities.to</T>{" "}
+            <Account address={msg.value.validator_address} />
+            <T>common.fullStop</T>
+          </p>
+        );
+      case "cosmos-sdk/MsgUndelegate":
+        return (
+          <p>
+            <Account address={msg.value.delegator_address} />{" "}
+            {this.props.invalid ? <T>activities.failedTo</T> : ""}
+            <MsgType type={msg.type} />{" "}
+            <span className="text-warning">
+              {new Coin(
+                msg.value.amount.amount,
+                msg.value.amount.denom
+              ).toString(6)}
+            </span>{" "}
+            <T>activities.from</T>{" "}
+            <Account address={msg.value.validator_address} />
+            <T>common.fullStop</T>
+          </p>
+        );
+      case "cosmos-sdk/MsgBeginRedelegate":
+        return (
+          <p>
+            <Account address={msg.value.delegator_address} />{" "}
+            {this.props.invalid ? <T>activities.failedTo</T> : ""}
+            <MsgType type={msg.type} />{" "}
+            <span className="text-warning">
+              {new Coin(
+                msg.value.amount.amount,
+                msg.value.amount.denom
+              ).toString(6)}
+            </span>{" "}
+            <T>activities.from</T>{" "}
+            <Account address={msg.value.validator_src_address} />{" "}
+            <T>activities.to</T>{" "}
+            <Account address={msg.value.validator_dst_address} />
+            <T>common.fullStop</T>
+          </p>
+        );
+
+      // gov
+      case "cosmos-sdk/MsgSubmitProposal":
+        const proposalId = _.get(
+          this.props,
+          "events[2].attributes[0].value",
+          null
+        );
+        const proposalLink = proposalId ? `/proposals/${proposalId}` : "#";
+        return (
+          <p>
+            <Account address={msg.value.proposer} /> <MsgType type={msg.type} />{" "}
+            <T>activities.withTitle</T>{" "}
+            <Link to={proposalLink}>{msg.value.content.value.title}</Link>
+            <T>common.fullStop</T>
+          </p>
+        );
+      case "cosmos-sdk/MsgDeposit":
+        return (
+          <p>
+            <Account address={msg.value.depositor} />{" "}
+            {this.props.invalid ? <T>activities.failedTo</T> : ""}
+            <MsgType type={msg.type} />{" "}
+            <em className="text-info">
+              {msg.value.amount
+                .map((amount, i) =>
+                  new Coin(amount.amount, amount.denom).toString(6)
+                )
+                .join(", ")}
+            </em>{" "}
+            <T>activities.to</T>{" "}
+            <Link to={"/proposals/" + msg.value.proposal_id}>
+              <T>proposals.proposal</T> {msg.value.proposal_id}
+            </Link>
+            <T>common.fullStop</T>
+          </p>
+        );
+      case "cosmos-sdk/MsgVote":
+        return (
+          <p>
+            <Account address={msg.value.voter} />{" "}
+            {this.props.invalid ? <T>activities.failedTo</T> : ""}
+            <MsgType type={msg.type} />{" "}
+            <Link to={"/proposals/" + msg.value.proposal_id}>
+              <T>proposals.proposal</T> {msg.value.proposal_id}
+            </Link>{" "}
+            <T>activities.withA</T>{" "}
+            <em className="text-info">{msg.value.option}</em>
+            <T>common.fullStop</T>
+          </p>
+        );
 
-            // staking
-        case "cosmos-sdk/MsgCreateValidator":
-            return <p><Account address={msg.value.delegator_address}/> {(this.props.invalid)?<T>activities.failedTo</T>:''}<MsgType type={msg.type} /> <T>activities.operatingAt</T> <span className="address"><Account address={msg.value.validator_address}/></span> <T>activities.withMoniker</T> <Link to="#">{msg.value.description.moniker}</Link><T>common.fullStop</T></p>
-        case "cosmos-sdk/MsgEditValidator":
-            return <p><Account address={msg.value.address}/> {(this.props.invalid)?<T>activities.failedTo</T>:''}<MsgType type={msg.type} /></p>
-        case "cosmos-sdk/MsgDelegate":
-            return <p><Account address={msg.value.delegator_address}/> {(this.props.invalid)?<T>activities.failedTo</T>:''}<MsgType type={msg.type} /> <span className="text-warning">{new Coin(msg.value.amount.amount, msg.value.amount.denom).toString(6)}</span> <T>activities.to</T> <Account address={msg.value.validator_address} /><T>common.fullStop</T></p>
-        case "cosmos-sdk/MsgUndelegate":
-            return <p><Account address={msg.value.delegator_address} /> {(this.props.invalid)?<T>activities.failedTo</T>:''}<MsgType type={msg.type} /> <span className="text-warning">{new Coin(msg.value.amount.amount, msg.value.amount.denom).toString(6)}</span> <T>activities.from</T> <Account address={msg.value.validator_address} /><T>common.fullStop</T></p>
-        case "cosmos-sdk/MsgBeginRedelegate":
-            return <p><Account address={msg.value.delegator_address} /> {(this.props.invalid)?<T>activities.failedTo</T>:''}<MsgType type={msg.type} /> <span className="text-warning">{new Coin(msg.value.amount.amount, msg.value.amount.denom).toString(6)}</span> <T>activities.from</T> <Account address={msg.value.validator_src_address} /> <T>activities.to</T> <Account address={msg.value.validator_dst_address} /><T>common.fullStop</T></p>
+      // distribution
+      case "cosmos-sdk/MsgWithdrawValidatorCommission":
+        return (
+          <p>
+            <Account address={msg.value.validator_address} />{" "}
+            {this.props.invalid ? <T>activities.failedTo</T> : ""}
+            <MsgType type={msg.type} />
+            <T>
+              {" "}
+              {!this.props.invalid ? (
+                <T
+                  _purify={false}
+                  amount={new Coin(
+                    parseInt(events["withdraw_commission"][0].value),
+                    events["withdraw_commission"][0].value.replace(/[0-9]/g, "")
+                  ).toString(6)}
+                >
+                  activities.withAmount
+                </T>
+              ) : (
+                ""
+              )}
+              common.fullStop
+            </T>
+          </p>
+        );
+      case "cosmos-sdk/MsgWithdrawDelegationReward":
+        return (
+          <p>
+            <Account address={msg.value.delegator_address} />{" "}
+            {this.props.invalid ? <T>activities.failedTo</T> : ""}
+            <MsgType type={msg.type} />{" "}
+            {!this.props.invalid ? (
+              <T
+                _purify={false}
+                amount={new Coin(
+                  parseInt(events["withdraw_rewards"][0].value),
+                  events["withdraw_rewards"][0].value.replace(/[0-9]/g, "")
+                ).toString(6)}
+              >
+                activities.withAmount
+              </T>
+            ) : (
+              ""
+            )}{" "}
+            <T>activities.from</T>{" "}
+            <Account address={msg.value.validator_address} />
+            <T>common.fullStop</T>
+          </p>
+        );
+      case "cosmos-sdk/MsgModifyWithdrawAddress":
+        return (
+          <p>
+            <Account address={msg.value.delegator_address} />{" "}
+            {this.props.invalid ? <T>activities.failedTo</T> : ""}
+            <MsgType type={msg.type} />
+          </p>
+        );
 
-            // gov
-        case "cosmos-sdk/MsgSubmitProposal":
-            const proposalId = _.get(this.props, 'events[2].attributes[0].value', null)
-            const proposalLink = proposalId ? `/proposals/${proposalId}` : "#";
-            return <p><Account address={msg.value.proposer} /> <MsgType type={msg.type} /> <T>activities.withTitle</T> <Link to={proposalLink}>{msg.value.content.value.title}</Link><T>common.fullStop</T></p>
-        case "cosmos-sdk/MsgDeposit":
-            return <p><Account address={msg.value.depositor} /> {(this.props.invalid)?<T>activities.failedTo</T>:''}<MsgType type={msg.type} /> <em className="text-info">{msg.value.amount.map((amount,i) =>new Coin(amount.amount, amount.denom).toString(6)).join(', ')}</em> <T>activities.to</T> <Link to={"/proposals/"+msg.value.proposal_id}><T>proposals.proposal</T> {msg.value.proposal_id}</Link><T>common.fullStop</T></p>
-        case "cosmos-sdk/MsgVote":
-            return <p><Account address={msg.value.voter} /> {(this.props.invalid)?<T>activities.failedTo</T>:''}<MsgType type={msg.type} />  <Link to={"/proposals/"+msg.value.proposal_id}><T>proposals.proposal</T> {msg.value.proposal_id}</Link> <T>activities.withA</T> <em className="text-info">{msg.value.option}</em><T>common.fullStop</T></p>
+      // slashing
+      case "cosmos-sdk/MsgUnjail":
+        return (
+          <p>
+            <Account address={msg.value.address} />{" "}
+            {this.props.invalid ? <T>activities.failedTo</T> : ""}
+            <MsgType type={msg.type} />
+            <T>common.fullStop</T>
+          </p>
+        );
 
-            // distribution
-        case "cosmos-sdk/MsgWithdrawValidatorCommission":
-            return <p><Account address={msg.value.validator_address} /> {(this.props.invalid)?<T>activities.failedTo</T>:''}<MsgType type={msg.type} /><T> {(!this.props.invalid)?<T _purify={false} amount={new Coin(parseInt(events['withdraw_commission'][0].value), events['withdraw_commission'][0].value.replace(/[0-9]/g, '')).toString(6)}>activities.withAmount</T>:''}common.fullStop</T></p>
-        case "cosmos-sdk/MsgWithdrawDelegationReward":
-            return <p><Account address={msg.value.delegator_address}/> {(this.props.invalid)?<T>activities.failedTo</T>:''}<MsgType type={msg.type} /> {(!this.props.invalid)?<T _purify={false} amount={new Coin(parseInt(events['withdraw_rewards'][0].value), events['withdraw_rewards'][0].value.replace(/[0-9]/g, '')).toString(6)}>activities.withAmount</T>:''} <T>activities.from</T> <Account address={msg.value.validator_address} /><T>common.fullStop</T></p>
-        case "cosmos-sdk/MsgModifyWithdrawAddress":
-            return <p><Account address={msg.value.delegator_address}/> {(this.props.invalid)?<T>activities.failedTo</T>:''}<MsgType type={msg.type} /></p>
+      // ibc
+      case "cosmos-sdk/IBCTransferMsg":
+        return <MsgType type={msg.type} />;
+      case "cosmos-sdk/IBCReceiveMsg":
+        return <MsgType type={msg.type} />;
 
-            // slashing
-        case "cosmos-sdk/MsgUnjail":
-            return <p><Account address={msg.value.address}/> {(this.props.invalid)?<T>activities.failedTo</T>:''}<MsgType type={msg.type} /><T>common.fullStop</T></p>
+      // clp
+      case "clp/Swap":
+          console.log(getCoinDecimals(msg.value.SentAsset.symbol))
+        return (
+            <p>
+              {/*<Account address={msg.value.Signer} />{" "}
+                <MsgType type={msg.type} /> &nbsp;
+                <span className="text-success">
+                    {new Coin(
+                        msg.value.SentAmount,
+                        msg.value.SentAsset.symbol
+                    ).toString(6)}
+                </span>{" "}
 
-            // ibc
-        case "cosmos-sdk/IBCTransferMsg":
-            return <MsgType type={msg.type} />
-        case "cosmos-sdk/IBCReceiveMsg":
-            return <MsgType type={msg.type} />
+                <span style={{marginRight: "6px"}}>for</span>
+                 <span className="text-success">
+                  {new Coin(
+                        msg.value.MinReceivingAmount,
+                        msg.value.ReceivedAsset.symbol
+                    ).toString(6)}
+                </span>{" "}*/}
+                <JSONPretty id="json-pretty" data={msg.value}></JSONPretty>
+            </p>
+        )
 
-        default:
-            return <div><JSONPretty id="json-pretty" data={msg.value}></JSONPretty></div>
-        }
+      default:
+        return (
+          <div>
+            <JSONPretty id="json-pretty" data={msg.value}></JSONPretty>
+          </div>
+        );
     }
+  }
 }
diff --git a/imports/ui/components/MsgType.jsx b/imports/ui/components/MsgType.jsx
index 999f57570..eacbebf8d 100644
--- a/imports/ui/components/MsgType.jsx
+++ b/imports/ui/components/MsgType.jsx
@@ -49,7 +49,9 @@ export const MsgType = (props) => {
         return <Badge color="dark"><T>messageTypes.IBCTransfer</T></Badge>;
     case "cosmos-sdk/IBCReceiveMsg":
         return <Badge color="dark"><T>messageTypes.IBCReceive</T></Badge>;
-
+      // clp
+      case "clp/Swap":
+        return <Badge color="success">Swap</Badge>;
     default:
         return <Badge color="primary">{props.type}</Badge>;
     }
diff --git a/imports/ui/transactions/Transaction.jsx b/imports/ui/transactions/Transaction.jsx
index 30b3dbcbd..46462c41a 100644
--- a/imports/ui/transactions/Transaction.jsx
+++ b/imports/ui/transactions/Transaction.jsx
@@ -1,85 +1,179 @@
-import React, { Component } from 'react';
-import { Container, Row, Col, Card, CardBody, Alert, Spinner } from 'reactstrap';
-import { TxIcon } from '../components/Icons.jsx';
-import Activities from '../components/Activities.jsx';
-import CosmosErrors from '../components/CosmosErrors.jsx';
-import { Link } from 'react-router-dom';
-import { Markdown } from 'react-showdown';
-import numbro from 'numbro';
-import { Helmet } from 'react-helmet';
-import i18n from 'meteor/universe:i18n';
-import Coin from '/both/utils/coins.js';
-import TimeStamp from '../components/TimeStamp.jsx';
+import React, { Component } from "react";
+import {
+  Container,
+  Row,
+  Col,
+  Card,
+  CardBody,
+  Alert,
+  Spinner,
+} from "reactstrap";
+import { TxIcon } from "../components/Icons.jsx";
+import Activities from "../components/Activities.jsx";
+import CosmosErrors from "../components/CosmosErrors.jsx";
+import { Link } from "react-router-dom";
+import { Markdown } from "react-showdown";
+import numbro from "numbro";
+import { Helmet } from "react-helmet";
+import i18n from "meteor/universe:i18n";
+import Coin from "/both/utils/coins.js";
+import TimeStamp from "../components/TimeStamp.jsx";
 
 const T = i18n.createComponent();
-export default class Transaction extends Component{
-    constructor(props){
-        super(props);
-        let showdown  = require('showdown');
-        showdown.setFlavor('github');
-        let denom = this.props.denom;
-    }
+export default class Transaction extends Component {
+  constructor(props) {
+    super(props);
+    let showdown = require("showdown");
+    showdown.setFlavor("github");
+    let denom = this.props.denom;
+  }
 
-    render(){
-        
-        
-        if (this.props.loading){
-            return <Container id="transaction">
-                <Spinner type="grow" color="primary" />
-            </Container>
-        }
-        else{
-            if (this.props.transactionExist){
-                let tx = this.props.transaction;
-                return <Container id="transaction">
-                    <Helmet>
-                        <title>Transaction {tx.txhash} on Cosmos Hub | The Big Dipper</title>
-                        <meta name="description" content={"Details of transaction "+tx.txhash} />
-                    </Helmet>
-                    <h4><T>transactions.transaction</T> {(!tx.code)?<TxIcon valid />:<TxIcon />}</h4>
-                    {(tx.code)?<Row><Col xs={{size:12, order:"last"}} className="error">
-                        <Alert color="danger">
-                            <CosmosErrors
-                                code={tx.code}
-                                codespace={tx.codespace}
-                                log={tx.raw_log}
-                            />
-                        </Alert>
-                    </Col></Row>:''}
-                    <Card>
-                        <div className="card-header"><T>common.information</T></div>
-                        <CardBody>
-                            <Row>
-                                <Col md={4} className="label"><T>common.hash</T></Col>
-                                <Col md={8} className="value text-nowrap overflow-auto address">{tx.txhash}</Col>
-                                <Col md={4} className="label"><T>common.height</T></Col>
-                                <Col md={8} className="value">
-                                    <Link to={"/blocks/"+tx.height}>{numbro(tx.height).format("0,0")}</Link>
-                                    {tx.block()?<span> <TimeStamp time={tx.block().time}/></span>:null}
-                                </Col>
-                                <Col md={4} className="label"><T>transactions.fee</T></Col>
-                                <Col md={8} className="value">{(tx.tx.value.fee.amount.length > 0)?tx.tx.value.fee.amount.map((fee,i) => {
-                                    return <span className="text-nowrap" key={i}> {((fee.amount/Meteor.settings.public.stakingFraction)>=1)?(new Coin(parseFloat(fee.amount), fee.denom)).stakeString():(new Coin(parseFloat(fee.amount), fee.denom)).mintString()} </span>
-                                }):<span><T>transactions.noFee</T></span>}</Col>
-                                <Col md={4} className="label"><T>transactions.gasUsedWanted</T></Col>
-                                <Col md={8} className="value">{numbro(tx.gas_used).format("0,0")} / {numbro(tx.gas_wanted).format("0,0")}</Col>
-                                <Col md={4} className="label"><T>transactions.memo</T></Col>
-                                <Col md={8} className="value"><Markdown markup={ tx.tx.value.memo } /></Col>
-                              
-                            </Row>
-                        </CardBody>
-                    </Card>
-                    <Card>
-                        <div className="card-header"><T>transactions.activities</T></div>
+  render() {
+    if (this.props.loading) {
+      return (
+        <Container id="transaction">
+          <Spinner type="grow" color="primary" />
+        </Container>
+      );
+    } else {
+      if (this.props.transactionExist) {
+        let tx = this.props.transaction;
+        return (
+          <Container id="transaction">
+            <Helmet>
+              <title>
+                Transaction {tx.txhash} on Cosmos Hub | The Big Dipper
+              </title>
+              <meta
+                name="description"
+                content={"Details of transaction " + tx.txhash}
+              />
+            </Helmet>
+            <h4>
+              <T>transactions.transaction</T>{" "}
+              {!tx.code ? <TxIcon valid /> : <TxIcon />}
+            </h4>
+            {tx.code ? (
+              <Row>
+                <Col xs={{ size: 12, order: "last" }} className="error">
+                  <Alert color="danger">
+                    <CosmosErrors
+                      code={tx.code}
+                      codespace={tx.codespace}
+                      log={tx.raw_log}
+                    />
+                  </Alert>
+                </Col>
+              </Row>
+            ) : (
+              ""
+            )}
+            <Card>
+              <div className="card-header">
+                <T>common.information</T>
+              </div>
+              <CardBody>
+                <Row>
+                  <Col md={4} className="label">
+                    <T>common.hash</T>
+                  </Col>
+                  <Col
+                    md={8}
+                    className="value text-nowrap overflow-auto address"
+                  >
+                    {tx.txhash}
+                  </Col>
+                  <Col md={4} className="label">
+                    <T>common.height</T>
+                  </Col>
+                  <Col md={8} className="value">
+                    <Link to={"/blocks/" + tx.height}>
+                      {numbro(tx.height).format("0,0")}
+                    </Link>
+                    {tx.block() ? (
+                      <span>
+                        {" "}
+                        <TimeStamp time={tx.block().time} />
+                      </span>
+                    ) : null}
+                  </Col>
+                  <Col md={4} className="label">
+                    <T>transactions.fee</T>
+                  </Col>
+                  <Col md={8} className="value">
+                    {tx.tx.value.fee.amount.length > 0 ? (
+                      tx.tx.value.fee.amount.map((fee, i) => {
+                        return (
+                          <span className="text-nowrap" key={i}>
+                            {" "}
+                            {fee.amount /
+                              Meteor.settings.public.stakingFraction >=
+                            1
+                              ? new Coin(
+                                  parseFloat(fee.amount),
+                                  fee.denom
+                                ).stakeString()
+                              : new Coin(
+                                  parseFloat(fee.amount),
+                                  fee.denom
+                                ).mintString()}{" "}
+                          </span>
+                        );
+                      })
+                    ) : (
+                      <span>
+                        <T>transactions.noFee</T>
+                      </span>
+                    )}
+                  </Col>
+                  <Col md={4} className="label">
+                    <T>transactions.gasUsedWanted</T>
+                  </Col>
+                  <Col md={8} className="value">
+                    {numbro(tx.gas_used).format("0,0")} /{" "}
+                    {numbro(tx.gas_wanted).format("0,0")}
+                  </Col>
+                  <Col md={4} className="label">
+                    <T>transactions.memo</T>
+                  </Col>
+                  <Col md={8} className="value">
+                    <Markdown markup={tx.tx.value.memo} />
+                  </Col>
+                </Row>
+              </CardBody>
+            </Card>
+            <Card>
+              <div className="card-header">
+                <T>transactions.activities</T>
+              </div>
+            </Card>
+            {tx.tx.value.msg && tx.tx.value.msg.length > 0
+              ? tx.tx.value.msg.map((msg, i) => {
+                  return (
+                    <Card body key={i}>
+                      <Activities
+                        msg={msg}
+                        invalid={!!tx.code}
+                        events={
+                          tx.logs && tx.logs[i] ? tx.logs[i].events : null
+                        }
+                        denom={this.denom}
+                      />
                     </Card>
-                    {(tx.tx.value.msg && tx.tx.value.msg.length >0)?tx.tx.value.msg.map((msg,i) => {
-                        return <Card body key={i}><Activities msg={msg} invalid={(!!tx.code)} events={(tx.logs&&tx.logs[i])?tx.logs[i].events:null} denom={this.denom}/></Card>
-                    }):''}
-                </Container>
-            }
-            else{
-                return <Container id="transaction"><div><T>transactions.noTxFound</T></div></Container>
-            }
-        }
+                  );
+                })
+              : ""}
+          </Container>
+        );
+      } else {
+        return (
+          <Container id="transaction">
+            <div>
+              <T>transactions.noTxFound</T>
+            </div>
+          </Container>
+        );
+      }
     }
-}
\ No newline at end of file
+  }
+}
diff --git a/imports/ui/transactions/TransactionRow.jsx b/imports/ui/transactions/TransactionRow.jsx
index 8e92dd4d0..a14d36a25 100644
--- a/imports/ui/transactions/TransactionRow.jsx
+++ b/imports/ui/transactions/TransactionRow.jsx
@@ -1,46 +1,147 @@
+import React, { Component } from "react";
+import { Link } from "react-router-dom";
+import {
+  Row,
+  Col,
+  Card,
+  Alert,
+  UncontrolledPopover,
+  PopoverHeader,
+  PopoverBody,
+} from "reactstrap";
+import { TxIcon } from "../components/Icons.jsx";
+import Activities from "../components/Activities.jsx";
+import CosmosErrors from "../components/CosmosErrors.jsx";
+import TimeAgo from "../components/TimeAgo.jsx";
+import numbro from "numbro";
+import Coin from "/both/utils/coins.js";
+import SentryBoundary from "../components/SentryBoundary.jsx";
+import { Markdown } from "react-showdown";
 
-import React, { Component } from 'react';
-import { Link } from 'react-router-dom';
-import { Row, Col, Card, Alert, UncontrolledPopover, PopoverHeader, PopoverBody } from 'reactstrap';
-import { TxIcon } from '../components/Icons.jsx';
-import Activities from '../components/Activities.jsx';
-import CosmosErrors from '../components/CosmosErrors.jsx';
-import TimeAgo from '../components/TimeAgo.jsx';
-import numbro from 'numbro';
-import Coin from '/both/utils/coins.js'
-import SentryBoundary from '../components/SentryBoundary.jsx';
-import { Markdown } from 'react-showdown';
-
-let showdown  = require('showdown');
-showdown.setFlavor('github');
+let showdown = require("showdown");
+showdown.setFlavor("github");
 
 export const TransactionRow = (props) => {
-    let tx = props.tx;
-     
-    return <SentryBoundary><Row className={(tx.code)?"tx-info invalid":"tx-info"}>
-        <Col xs={12} lg={7} className="activity">{(tx.tx.value.msg && tx.tx.value.msg.length >0)?tx.tx.value.msg.map((msg,i) => {
-            return <Card body key={i}><Activities msg={msg} invalid={(!!tx.code)} events={(tx.logs&&tx.logs[i])?tx.logs[i].events:null} /></Card>
-        }):''}</Col>
-        <Col xs={(!props.blockList)?{size:6,order:"last"}:{size:12,order:"last"}} md={(!props.blockList)?{size:3, order: "last"}:{size:7, order: "last"}} lg={(!props.blockList)?{size:1,order:"last"}:{size:2,order:"last"}} className="text-truncate"><i className="fas fa-hashtag d-lg-none"></i> <Link to={"/transactions/"+tx.txhash}>{tx.txhash}</Link></Col>
-        <Col xs={6} md={9} lg={{size:2,order:"last"}} className="text-nowrap"><i className="material-icons">schedule</i> <span>{tx.block()?<TimeAgo time={tx.block().time} />:''}</span>{(tx.tx.value.memo && tx.tx.value.memo != "")?<span>
-            <i className="material-icons ml-2 memo-button" id={"memo-"+tx.txhash}>message</i>
-            <UncontrolledPopover trigger="legacy" placement="top-start" target={"memo-"+tx.txhash}>
-                <PopoverBody><Markdown markup={tx.tx.value.memo} /></PopoverBody>
-            </UncontrolledPopover>
-        </span>:""}</Col>
-        {(!props.blockList)?<Col xs={4} md={2} lg={1}><i className="fas fa-database d-lg-none"></i> <Link to={"/blocks/"+tx.height}>{numbro(tx.height).format("0,0")}</Link></Col>:''}
-        <Col xs={(!props.blockList)?2:4} md={1}>{(!tx.code)?<TxIcon valid />:<TxIcon />}</Col>
-        <Col xs={(!props.blockList)?6:8} md={(!props.blockList)?9:4} lg={2} className="fee"><i className="material-icons d-lg-none">monetization_on</i> {(tx.tx.value.fee.amount.length > 0)?tx.tx.value.fee.amount.map((fee,i) => {
-            return <span className="text-nowrap" key={i}>{(new Coin(parseFloat(fee.amount), (fee)?fee.denom:null)).stakeString()}</span>
-        }):<span>No fee</span>}</Col>
-        {(tx.code)?<Col xs={{size:12, order:"last"}} className="error">
+  let tx = props.tx;
+
+  return (
+    <SentryBoundary>
+      <Row className={tx.code ? "tx-info invalid" : "tx-info"}>
+        <Col xs={12} lg={7} className="activity">
+          {tx.tx.value.msg && tx.tx.value.msg.length > 0
+            ? tx.tx.value.msg.map((msg, i) => {
+                return (
+                  <Card body key={i}>
+                    <Activities
+                      msg={msg}
+                      invalid={!!tx.code}
+                      events={tx.logs && tx.logs[i] ? tx.logs[i].events : null}
+                    />
+                  </Card>
+                );
+              })
+            : ""}
+        </Col>
+        <Col
+          xs={
+            !props.blockList
+              ? { size: 6, order: "last" }
+              : { size: 12, order: "last" }
+          }
+          md={
+            !props.blockList
+              ? { size: 3, order: "last" }
+              : { size: 7, order: "last" }
+          }
+          lg={
+            !props.blockList
+              ? { size: 1, order: "last" }
+              : { size: 2, order: "last" }
+          }
+          className="text-truncate"
+        >
+          <i className="fas fa-hashtag d-lg-none"></i>{" "}
+          <Link to={"/transactions/" + tx.txhash}>{tx.txhash}</Link>
+        </Col>
+        <Col
+          xs={6}
+          md={9}
+          lg={{ size: 2, order: "last" }}
+          className="text-nowrap"
+        >
+          <i className="material-icons">schedule</i>{" "}
+          <span>{tx.block() ? <TimeAgo time={tx.block().time} /> : ""}</span>
+          {tx.tx.value.memo && tx.tx.value.memo != "" ? (
+            <span>
+              <i
+                className="material-icons ml-2 memo-button"
+                id={"memo-" + tx.txhash}
+              >
+                message
+              </i>
+              <UncontrolledPopover
+                trigger="legacy"
+                placement="top-start"
+                target={"memo-" + tx.txhash}
+              >
+                <PopoverBody>
+                  <Markdown markup={tx.tx.value.memo} />
+                </PopoverBody>
+              </UncontrolledPopover>
+            </span>
+          ) : (
+            ""
+          )}
+        </Col>
+        {!props.blockList ? (
+          <Col xs={4} md={2} lg={1}>
+            <i className="fas fa-database d-lg-none"></i>{" "}
+            <Link to={"/blocks/" + tx.height}>
+              {numbro(tx.height).format("0,0")}
+            </Link>
+          </Col>
+        ) : (
+          ""
+        )}
+        <Col xs={!props.blockList ? 2 : 4} md={1}>
+          {!tx.code ? <TxIcon valid /> : <TxIcon />}
+        </Col>
+        <Col
+          xs={!props.blockList ? 6 : 8}
+          md={!props.blockList ? 9 : 4}
+          lg={2}
+          className="fee"
+        >
+          <i className="material-icons d-lg-none">monetization_on</i>{" "}
+          {tx.tx.value.fee.amount.length > 0 ? (
+            tx.tx.value.fee.amount.map((fee, i) => {
+              return (
+                <span className="text-nowrap" key={i}>
+                  {new Coin(
+                    parseFloat(fee.amount),
+                    fee ? fee.denom : null
+                  ).stakeString()}
+                </span>
+              );
+            })
+          ) : (
+            <span>No fee</span>
+          )}
+        </Col>
+        {tx.code ? (
+          <Col xs={{ size: 12, order: "last" }} className="error">
             <Alert color="danger">
-                <CosmosErrors
-                    code={tx.code}
-                    codespace={tx.codespace}
-                    log={tx.raw_log}
-                />
+              <CosmosErrors
+                code={tx.code}
+                codespace={tx.codespace}
+                log={tx.raw_log}
+              />
             </Alert>
-        </Col>:''}
-    </Row></SentryBoundary>
-}
+          </Col>
+        ) : (
+          ""
+        )}
+      </Row>
+    </SentryBoundary>
+  );
+};

From 9b2b9fd26b679cba75e335066d3054d382af99ed Mon Sep 17 00:00:00 2001
From: 59023g <5235538+59023g@users.noreply.github.com>
Date: Mon, 22 Mar 2021 17:06:53 -0500
Subject: [PATCH 14/74] i18n/en-us: words

---
 both/i18n/en-us.i18n.yml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/both/i18n/en-us.i18n.yml b/both/i18n/en-us.i18n.yml
index a565b91da..f4f889649 100644
--- a/both/i18n/en-us.i18n.yml
+++ b/both/i18n/en-us.i18n.yml
@@ -143,6 +143,8 @@ transactions:
     distribution: 'Distribution'
     governance: 'Governance'
     slashing: 'Slashing'
+    clp: "CLP"
+    peg: "Peg"
 proposals:
     notFound: 'No proposal found.'
     listOfProposals: 'Here is a list of governance proposals.'

From eacd7b4e01debd961e2985bfd09a07d97ee0c707 Mon Sep 17 00:00:00 2001
From: intl-man <theinternationalman079@gmail.com>
Date: Tue, 6 Apr 2021 11:22:37 +0800
Subject: [PATCH 15/74] Workflow updates.

---
 .github/workflows/release.yml | 11 +----------
 1 file changed, 1 insertion(+), 10 deletions(-)

diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index b7974a377..96399f18b 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -15,18 +15,9 @@ jobs:
       - name: Login to Docker Hub
         run: docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_TOKEN }}
 
-      - if: contains(github.ref, 'testnet')
-        run: |
-          echo "CHAINNET=testnet" >> "$GITHUB_ENV"
-
-      - if: contains(github.ref, 'mainnet')
-        run: |
-          echo "CHAINNET=mainnet" >> "$GITHUB_ENV"
-
       - name: Build docker image
         run: |
-          echo ${{ env.CHAINNET }}
-          docker build -t sifchain/block-explorer:${{ env.CHAINNET }} .
+          docker build -t sifchain/block-explorer:${{ github.ref }} .
 
       - name: Push docker images
         run: |

From 24bfe8f1e5c5bf53006bbda427c604e9e37b27f7 Mon Sep 17 00:00:00 2001
From: intl-man <theinternationalman079@gmail.com>
Date: Tue, 6 Apr 2021 11:37:25 +0800
Subject: [PATCH 16/74] Release fixes.

---
 .github/workflows/release.yml | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index 96399f18b..c617a9b40 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -15,10 +15,13 @@ jobs:
       - name: Login to Docker Hub
         run: docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_TOKEN }}
 
+      - name: Inject slug/short variables
+        uses: rlespinasse/github-slug-action@v2.x
+
       - name: Build docker image
         run: |
-          docker build -t sifchain/block-explorer:${{ github.ref }} .
+          docker build -t sifchain/block-explorer:${{ env.GITHUB_REF_SLUG }} .
 
       - name: Push docker images
         run: |
-          docker push sifchain/block-explorer:${{ env.CHAINNET }}
+          docker push sifchain/block-explorer:${{ env.GITHUB_REF_SLUG }}

From a8e3ca040a55665d69af9125a130fe6f7ed5a6d2 Mon Sep 17 00:00:00 2001
From: 59023g <5235538+59023g@users.noreply.github.com>
Date: Tue, 6 Apr 2021 13:26:50 -0500
Subject: [PATCH 17/74] sifTxs, look

---
 both/document.html                            |   6 +-
 both/i18n/en-us.i18n.yml                      |   2 +-
 both/utils/coins.js                           |   1 +
 client/styles.scss                            |  45 ++++++++
 imports/ui/accounts/Account.jsx               |   2 +-
 imports/ui/blocks/Block.jsx                   |   2 +-
 imports/ui/blocks/BlocksTable.jsx             |   4 +-
 imports/ui/components/Activities.jsx          |  47 +++++++-
 imports/ui/components/Header.jsx              |  10 +-
 .../ui/components/TransactionsContainer.js    |   5 +-
 imports/ui/home/Home.jsx                      |   2 +-
 imports/ui/proposals/Proposals.jsx            |  14 +--
 imports/ui/transactions/TransactionsList.jsx  |  40 +++----
 imports/ui/validators/Validator.jsx           |   4 +-
 imports/ui/validators/ValidatorsList.jsx      | 100 +++++++++---------
 public/img/sifchain.svg                       |   3 +
 16 files changed, 197 insertions(+), 90 deletions(-)
 create mode 100644 public/img/sifchain.svg

diff --git a/both/document.html b/both/document.html
index 36e534fd7..837670415 100644
--- a/both/document.html
+++ b/both/document.html
@@ -1,11 +1,11 @@
 <head>
     <meta charset="utf-8" />
-    <title>Big Dipper | Block Explorer by Forbole</title>
+    <title>Sifchain - Block Explorer</title>
     <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
     <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.3.1/css/all.css" integrity="sha384-mzrmE5qonljUremFsqc01SB46JvROS7bZs3IO2EmfFsd15uHvIt+Y8vEf7N7fWAU" crossorigin="anonymous">
     <link href="https://fonts.googleapis.com/css?family=Inconsolata&Red+Hat+Display:wght@500&display=swap" rel="stylesheet">
-    <link rel="shortcut icon" type="image/png" href="/img/big-dipper.png"/>
-    <link rel="apple-touch-icon" sizes="180x180" href="/img/big-dipper.png">
+    <link rel="shortcut icon" type="image/png" href="/img/sifchain.svg"/>
+    <link rel="apple-touch-icon" sizes="180x180" href="/img/sifchain.svg">
     <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
     <meta content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" name="viewport" />
     <meta name="apple-mobile-web-app-capable" content="yes" />
diff --git a/both/i18n/en-us.i18n.yml b/both/i18n/en-us.i18n.yml
index f4f889649..b3a91237f 100644
--- a/both/i18n/en-us.i18n.yml
+++ b/both/i18n/en-us.i18n.yml
@@ -19,7 +19,7 @@ common:
     hash: 'Hash'
     more: 'More'
     fullStop: '.'
-    searchPlaceholder: 'Search with tx hash / block height / address'
+    searchPlaceholder: 'Search with Tx Hash / Block Height / Address'
     cancel: 'Cancel'
     retry: 'Retry'
     rewards: 'Rewards'
diff --git a/both/utils/coins.js b/both/utils/coins.js
index 46f5fd76b..4cd96fe19 100644
--- a/both/utils/coins.js
+++ b/both/utils/coins.js
@@ -58,6 +58,7 @@ export default class Coin {
 	toString (precision) {
 		// default to display in mint denom if it has more than 4 decimal places
 		let minStake = Coin.StakingCoin.fraction/(precision?Math.pow(10, precision):10000)
+		// console.log('minStake', this.amount, minStake)
 		if (this.amount < minStake) {
 			return `${numbro(this.amount).format('0,0.0000' )} ${this._coin.denom}`;
 		} else {
diff --git a/client/styles.scss b/client/styles.scss
index f9e125bec..f88159e68 100644
--- a/client/styles.scss
+++ b/client/styles.scss
@@ -5,8 +5,53 @@ $primary: $forbole-red !default;
 @import "bootstrap";
 @import "materia/bootswatch";
 
+@import url('https://fonts.googleapis.com/css2?family=PT+Serif:ital,wght@0,400;0,700;1,400&display=swap');
+
+.nav-item { cursor: pointer }
+.quick-note { font-weight: 900;
+    width: 100%;
+    border-top: 1px solid;
+    display: block;}
+
+.card {
+  box-shadow: none;
+  border: 1px solid rgba(0,0,0,.5);
+}
+
+.navbar {
+  box-shadow: none;
+}
+
+.navbar-dark .navbar-nav .nav-link {
+  color: rgba(255, 255, 255, 1);
+  font-weight: 900;
+}
+
+#account > div:nth-child(2) > div > h3 > span > span > a {
+  color: white
+}
+#queryString {box-shadow: inset 0 -2px 0 #fff}
+h1 { color: white }
+#footer { display: none !important}
+
+.bgw { background: white}
+
+#validator-list > .card { border: none}
+#validator-list > div.validator-list.row > div > div:nth-child(1) {}
+#validator-list > div.bgw.mt15 > div > div > div{border: none}
+.mt15 { margin-top: 15px}
+.p15 { padding: 15px}
+
+#main > div:nth-child(3) > div:nth-child(2) > div > div > div.col-md-8 > ul.nav-pills { background: white; padding: 15px}
+#account > div:nth-child(2) > div > h3 > span > i { color: #343434 !important }
+#account > div:nth-child(2) > div > h3 > span > span {overflow: hidden !important}
+
+
+::placeholder { color: white !important; opacity: 1}
 body {
     font-size: inherit !important;
+    font-family: "PT Serif";
+    background: #caa93a;
   }
   
   .no-select {
diff --git a/imports/ui/accounts/Account.jsx b/imports/ui/accounts/Account.jsx
index 3b1c91c38..e61af2c9e 100644
--- a/imports/ui/accounts/Account.jsx
+++ b/imports/ui/accounts/Account.jsx
@@ -282,7 +282,7 @@ export default class AccountDetails extends Component{
         else if (this.state.accountExists){
             return <div id="account">
                 <Helmet>
-                    <title>Account Details of {this.state.address} on Cosmos Hub | The Big Dipper</title>
+                    <title>Account Details of {this.state.address} on Sifchain | The Big Dipper</title>
                     <meta name="description" content={"Account Details of "+this.state.address+" on Cosmos Hub"} />
                 </Helmet>
                 <Row>
diff --git a/imports/ui/blocks/Block.jsx b/imports/ui/blocks/Block.jsx
index d910b193d..909f85d68 100644
--- a/imports/ui/blocks/Block.jsx
+++ b/imports/ui/blocks/Block.jsx
@@ -60,7 +60,7 @@ export default class Block extends Component{
 
                 return <Container id="block">
                     <Helmet>
-                        <title>Block {numbro(block.height).format("0,0")} on Cosmos Hub | The Big Dipper</title>
+                        <title>Block {numbro(block.height).format("0,0")} on Sifchain | The Big Dipper</title>
                         <meta name="description" content={"Block details of height "+numbro(block.height).format("0,0")} />
                     </Helmet>
                     <h4><T>blocks.block</T> {numbro(block.height).format("0,0")}</h4>
diff --git a/imports/ui/blocks/BlocksTable.jsx b/imports/ui/blocks/BlocksTable.jsx
index 975167fb4..27be91706 100644
--- a/imports/ui/blocks/BlocksTable.jsx
+++ b/imports/ui/blocks/BlocksTable.jsx
@@ -77,13 +77,14 @@ export default class BlocksTable extends Component {
     render(){
         return <div>
             <Helmet>
-                <title>Latest Blocks on Cosmos Hub | The Big Dipper</title>
+                <title>Latest Blocks on Sifchain | The Big Dipper</title>
                 <meta name="description" content="Latest blocks committed by validators on Cosmos Hub" />
             </Helmet>
             <Row>
                 <Col md={3} xs={12}><h1 className="d-none d-lg-block"><T>blocks.latestBlocks</T></h1></Col>
                 <Col md={9} xs={12} className="text-md-right"><ChainStates /></Col>
             </Row>
+            <div class="bgw mt15">
             <Switch>
                 <Route path="/blocks/:blockId" render={(props)=> <Sidebar 
                     sidebar={<Block {...props} />}
@@ -105,6 +106,7 @@ export default class BlocksTable extends Component {
                 <Blocks limit={this.state.limit} />
             </Container>
             <LoadMore show={this.state.loadmore} />
+            </div>
         </div>
     }
 }
diff --git a/imports/ui/components/Activities.jsx b/imports/ui/components/Activities.jsx
index 30900eba6..f0e1193dd 100644
--- a/imports/ui/components/Activities.jsx
+++ b/imports/ui/components/Activities.jsx
@@ -304,7 +304,7 @@ export default class Activites extends Component {
 
       // clp
       case "clp/Swap":
-          console.log(getCoinDecimals(msg.value.SentAsset.symbol))
+          // console.log(getCoinDecimals(msg.value.SentAsset.symbol))
         return (
             <p>
               {/*<Account address={msg.value.Signer} />{" "}
@@ -324,13 +324,58 @@ export default class Activites extends Component {
                     ).toString(6)}
                 </span>{" "}*/}
                 <JSONPretty id="json-pretty" data={msg.value}></JSONPretty>
+                <span class="quick-note">Swap</span>
             </p>
         )
 
+      case "ethbridge/MsgLock":
+        return (
+          <p>
+              <JSONPretty id="json-pretty" data={msg.value}></JSONPretty>
+              <span class="quick-note">Unpeg</span>
+            </p>
+          )
+
+      case  "ethbridge/MsgBurn":
+        return (
+          <p>
+              <JSONPretty id="json-pretty" data={msg.value}></JSONPretty>
+              <span class="quick-note">Unpeg</span>
+            </p>
+          )
+
+      case "ethbridge/MsgCreateEthBridgeClaim":
+        return (
+          <p>
+                <JSONPretty id="json-pretty" data={msg.value}></JSONPretty>
+                <span class="quick-note">Peg</span>
+            </p>
+          )      
+
+      case  "clp/AddLiquidity":
+        return (
+          <p>
+              <JSONPretty id="json-pretty" data={msg.value}></JSONPretty>
+              <span class="quick-note">Add Liquidity</span>
+            </p>
+          )
+
+      case  "clp/RemoveLiquidity":
+        return (
+          <p>
+              <JSONPretty id="json-pretty" data={msg.value}></JSONPretty>
+              <span class="quick-note">Remove Liquidity</span>
+            </p>
+          )
+
+
+
       default:
         return (
           <div>
             <JSONPretty id="json-pretty" data={msg.value}></JSONPretty>
+            {msg.type}
+            
           </div>
         );
     }
diff --git a/imports/ui/components/Header.jsx b/imports/ui/components/Header.jsx
index 565cdf1fb..a60546154 100644
--- a/imports/ui/components/Header.jsx
+++ b/imports/ui/components/Header.jsx
@@ -169,11 +169,15 @@ export default class Header extends Component {
         let signedInAddress = getUser();
         return (
             <Navbar color="primary" dark expand="lg" fixed="top" id="header">
-                <NavbarBrand tag={Link} to="/"><img src="/img/big-dipper-icon-light.svg" className="img-fluid logo"/> <span className="d-none d-xl-inline-block"><T>navbar.siteName</T>&nbsp;</span><Badge color="secondary">{this.state.version}</Badge> </NavbarBrand>
-                <UncontrolledDropdown className="d-inline text-nowrap">
+                <NavbarBrand tag={Link} to="/">
+                    <img src="/img/sifchain.svg" className="img-fluid logo"/> 
+{/*                    <span className="d-none d-xl-inline-block"><T>navbar.siteName</T>&nbsp;</span>
+                    <Badge color="secondary">{this.state.version}</Badge> */}
+                </NavbarBrand>
+{/*                <UncontrolledDropdown className="d-inline text-nowrap">
                     <DropdownToggle caret={(this.state.networks !== "")} tag="span" size="sm" id="network-nav">{Meteor.settings.public.chainId}</DropdownToggle>
                     {this.state.networks}
-                </UncontrolledDropdown>
+                </UncontrolledDropdown>*/}
                 <SearchBar id="header-search" history={this.props.history} />
                 <NavbarToggler onClick={this.toggle} />
                 <Collapse isOpen={this.state.isOpen} navbar>
diff --git a/imports/ui/components/TransactionsContainer.js b/imports/ui/components/TransactionsContainer.js
index bba4c8fae..c293903ea 100644
--- a/imports/ui/components/TransactionsContainer.js
+++ b/imports/ui/components/TransactionsContainer.js
@@ -37,8 +37,9 @@ export default TransactionsContainer = withTracker((props) => {
         }).fetch() : {},
         pegTxs: transactionsExist ? Transactions.find({
             $or: [
-                {"tx.value.msg.type":"ethbridge/MsgLock"}, // unpeg?
-                {"tx.value.msg.type":"ethbridge/MsgCreateEthBridgeClaim"}, // peg: non-rowan (lock), rowan (burn)
+                {"tx.value.msg.type":"ethbridge/MsgLock"},
+                {"tx.value.msg.type":"ethbridge/MsgBurn"},
+                {"tx.value.msg.type":"ethbridge/MsgCreateEthBridgeClaim"},
             ]
         }).fetch() : {},           
         transferTxs: transactionsExist ? Transactions.find({
diff --git a/imports/ui/home/Home.jsx b/imports/ui/home/Home.jsx
index 42d5ba55e..5fe38d984 100644
--- a/imports/ui/home/Home.jsx
+++ b/imports/ui/home/Home.jsx
@@ -16,7 +16,7 @@ export default class Home extends Component{
     render() {
         return <div id="home">
             <Helmet>
-                <title>The Big Dipper | Cosmos Explorer by Forbole</title>
+                <title>Sifchain Explorer by Forbole</title>
                 <meta name="description" content="Cosmos is a decentralized network of independent parallel blockchains, each powered by BFT consensus algorithms like Tendermint consensus." />
             </Helmet>
             <ChainInfo/>
diff --git a/imports/ui/proposals/Proposals.jsx b/imports/ui/proposals/Proposals.jsx
index 1fc3ab395..d482d62f9 100644
--- a/imports/ui/proposals/Proposals.jsx
+++ b/imports/ui/proposals/Proposals.jsx
@@ -11,7 +11,7 @@ const T = i18n.createComponent();
 
 const ProposalList = (props) => {
     return <div>
-        <p className="lead"><T>proposals.listOfProposals</T></p>
+        {/*<p className="lead"><T>proposals.listOfProposals</T></p>*/}
         <Row>
             <Col md={12}>
                 <List {...props}/>
@@ -27,17 +27,19 @@ export default class Proposals extends Component{
     render() {
         return <div>
             <Helmet>
-                <title>Governance Proposals on Cosmos Hub | The Big Dipper</title>
+                <title>Governance Proposals on Sifchain | The Big Dipper</title>
                 <meta name="description" content="Cosmos Hub incorporates on-chain governance. Come to see how on-chain governance can be achieved on The Big Dipper." />
             </Helmet>
             <Row>
                 <Col md={3} xs={12}><h1 className="d-none d-lg-block"><T>proposals.proposals</T></h1></Col>
                 <Col md={9} xs={12} className="text-md-right"><ChainStates /></Col>
             </Row>
-            <Switch>
-                <Route exact path="/proposals" component={ProposalList} />
-                <Route path="/proposals/:id" component={Proposal} />
-            </Switch>
+            <div class="bgw mt15">
+                <Switch>
+                    <Route exact path="/proposals" component={ProposalList} />
+                    <Route path="/proposals/:id" component={Proposal} />
+                </Switch>
+            </div>
         </div>
     }
 
diff --git a/imports/ui/transactions/TransactionsList.jsx b/imports/ui/transactions/TransactionsList.jsx
index fae5057f8..58bb7139c 100644
--- a/imports/ui/transactions/TransactionsList.jsx
+++ b/imports/ui/transactions/TransactionsList.jsx
@@ -85,31 +85,33 @@ export default class Transactions extends Component{
     render(){
         return <div id="transactions">
             <Helmet>
-                <title>Latest Transactions on Cosmos Hub | The Big Dipper</title>
+                <title>Latest Transactions on Sifchain | The Big Dipper</title>
                 <meta name="description" content="See what is happening on Cosmos Hub" />
             </Helmet>
             <Row>
                 <Col md={3} xs={12}><h1 className="d-none d-lg-block"><T>transactions.transactions</T></h1></Col>
                 <Col md={9} xs={12} className="text-md-right"><ChainStates /></Col>
             </Row>
-            <Switch>
-                <Route path="/transactions/:txId" render={(props)=> <Sidebar 
-                    sidebar={<Transaction {...props} />}
-                    open={this.state.sidebarOpen}
-                    onSetOpen={this.onSetSidebarOpen}
-                    styles={{ sidebar: { 
-                        background: "white", 
-                        position: "fixed",
-                        width: '85%',
-                        zIndex: 4
-                    },overlay: {
-                        zIndex: 3
-                    } }}
-                >
-                </Sidebar>} />
-            </Switch>
-            <List limit={this.state.limit} />
-            <LoadMore show={this.state.loadmore} />
+            <div class="bgw mt15">
+                <Switch>
+                    <Route path="/transactions/:txId" render={(props)=> <Sidebar 
+                        sidebar={<Transaction {...props} />}
+                        open={this.state.sidebarOpen}
+                        onSetOpen={this.onSetSidebarOpen}
+                        styles={{ sidebar: { 
+                            background: "white", 
+                            position: "fixed",
+                            width: '85%',
+                            zIndex: 4
+                        },overlay: {
+                            zIndex: 3
+                        } }}
+                    >
+                    </Sidebar>} />
+                </Switch>
+                <List limit={this.state.limit} />
+                <LoadMore show={this.state.loadmore} />
+            </div>
         </div>
     }
 }
\ No newline at end of file
diff --git a/imports/ui/validators/Validator.jsx b/imports/ui/validators/Validator.jsx
index a0ecf77bd..246cdb443 100644
--- a/imports/ui/validators/Validator.jsx
+++ b/imports/ui/validators/Validator.jsx
@@ -190,7 +190,7 @@ export default class Validator extends Component{
 
                 return <Row className="validator-details">
                     <Helmet>
-                        <title>{ moniker } - Cosmos Validator | The Big Dipper</title>
+                        <title>{ moniker } - Sifchain Validator | The Big Dipper</title>
                         <meta name="description" content={details} />
                     </Helmet>
                     <Col xs={12}>
@@ -264,7 +264,7 @@ export default class Validator extends Component{
                                 </Row>
                             </CardBody>
                         </Card>
-                        <Nav pills>
+                        <Nav pills class="bgw">
                             <NavItem>
                                 <NavLink tag={Link} to={"/validator/"+this.props.validator.operator_address} active={!(this.props.location.pathname.match(/(delegations|transactions)/gm))}><T>validators.powerChange</T></NavLink>
                             </NavItem>
diff --git a/imports/ui/validators/ValidatorsList.jsx b/imports/ui/validators/ValidatorsList.jsx
index dedcb61e7..aaf9f1c53 100644
--- a/imports/ui/validators/ValidatorsList.jsx
+++ b/imports/ui/validators/ValidatorsList.jsx
@@ -77,61 +77,63 @@ export default class Validators extends Component{
 
         return <div id="validator-list">
             <Helmet>
-                <title>Cosmos Validator List | The Big Dipper</title>
+                <title>Sifchain Validator List | The Big Dipper</title>
                 <meta name="description" content="Here is a list of Cosmos Validators" />
             </Helmet>
             <Row>
                 <Col lg={3} xs={12}><h1 className="d-none d-lg-block">{title}</h1></Col>
                 <Col lg={9} xs={12} className="text-lg-right"><ChainStates /></Col>
             </Row>
-            <Nav pills className="status-switch">
-                <NavItem>
-                    <NavLink tag={Link} to="/validators" active={(this.props.match.url == "/validators")}><T>validators.navActive</T></NavLink>
-                </NavItem>
-                <NavItem>
-                    <NavLink tag={Link} to="/validators/inactive"
-                        active={(this.props.match.url.indexOf("inactive")>0)}>
-                        <T>validators.navInactive</T>
-                    </NavLink>
-                </NavItem>
-            </Nav>
-            <p className="lead">{desc}</p>
-            <Row className="validator-list">
-                <Col md={12}>
-                    <Card body>
-                        <Row className="header text-nowrap">
-                            <Col className="d-none d-md-block counter" md={1}>&nbsp;</Col>
-                            <Col className="moniker" md={2} onClick={(e) => this.toggleDir('moniker',e)}><i className="material-icons">perm_contact_calendar</i> <span className="d-inline-block d-md-none d-lg-inline-block"><T>validators.moniker</T></span> {renderToggleIcon(this.state.monikerDir)} </Col>
-                            <Col className="voting-power" md={3} lg={2} onClick={(e) => this.toggleDir('votingPower',e)}><i className="material-icons">power</i> <span className="d-inline-block d-md-none d-lg-inline-block"><T>common.votingPower</T></span> {renderToggleIcon(this.state.votingPowerDir)} </Col>
-                            <Col className="self-delegation" md={1} onClick={(e) => this.toggleDir('selfDel',e)}><i className="material-icons">equalizer</i> <span className="d-md-none d-lg-inline-block"><T>validators.selfPercentage</T></span> {renderToggleIcon(this.state.selfDelDir==1)} </Col>
-                            {(!this.props.inactive)?<Col className="commission" md={1} lg={2} onClick={(e) => this.toggleDir('commission',e)}><i className="material-icons">call_split</i> <span className="d-inline-block d-md-none d-lg-inline-block"><T>validators.commission</T></span> {renderToggleIcon(this.state.commissionDir==1)}</Col>:''}
-                            {(!this.props.inactive)?<Col className="uptime" md={2} lg={3} onClick={(e) => this.toggleDir('uptime',e)}><i className="material-icons">flash_on</i> <span className="d-inline-block d-md-none d-lg-inline-block"><T>validators.uptime</T> ({Meteor.settings.public.uptimeWindow} <i className="fas fa-cube"></i>)</span> {renderToggleIcon(this.state.uptimeDir==1)}</Col>:''}
-                            {(this.props.inactive)?<Col className="last-seen" md={3}><i className="far fa-clock"></i> <span className="d-md-none d-lg-inline-block"><T>validators.lastSeen</T> (UTC)</span></Col>:''}
-                            {(this.props.inactive)?<Col className="bond-status d-none d-md-block" md={1} onClick={(e) => this.toggleDir('status',e)}><i className="material-icons">toggle_on</i> <span className="d-md-none d-lg-inline-block"><T>validators.status</T></span> {renderToggleIcon(this.state.statusDir)} </Col>:''}
-                            {(this.props.inactive)?<Col className="jail-status d-none d-md-block" md={1} onClick={(e) => this.toggleDir('jailed',e)}><i className="material-icons">lock</i> <span className="d-md-none d-lg-inline-block"><T>validators.jailed</T></span> {renderToggleIcon(this.state.jailedDir)} </Col>:''}
-                        </Row>
-                    </Card>
-                    {(this.props.inactive)?<List
-                        inactive={this.props.inactive}
-                        monikerDir={this.state.monikerDir}
-                        votingPowerDir={this.state.votingPowerDir}
-                        uptimeDir={this.state.uptimeDir}
-                        commissionDir={this.state.commissionDir}
-                        selfDelDir={this.state.selfDelDir}
-                        statusDir={this.state.statusDir}
-                        jailedDir={this.state.jailedDir}
-                        priority={this.state.priority}
-                        status={this.props.status}
-                    />:<List
-                        monikerDir={this.state.monikerDir}
-                        votingPowerDir={this.state.votingPowerDir}
-                        uptimeDir={this.state.uptimeDir}
-                        commissionDir={this.state.commissionDir}
-                        selfDelDir={this.state.selfDelDir}
-                        priority={this.state.priority}
-                    />}
-                </Col>
-            </Row>
+            <div class="bgw mt15">
+                <Nav pills className="status-switch p15">
+                    <NavItem>
+                        <NavLink tag={Link} to="/validators" active={(this.props.match.url == "/validators")}><T>validators.navActive</T></NavLink>
+                    </NavItem>
+                    <NavItem>
+                        <NavLink tag={Link} to="/validators/inactive"
+                            active={(this.props.match.url.indexOf("inactive")>0)}>
+                            <T>validators.navInactive</T>
+                        </NavLink>
+                    </NavItem>
+                </Nav>
+                {/*<p className="lead">{desc}</p>*/}
+                <Row className="validator-list">
+                    <Col md={12}>
+                        <Card body>
+                            <Row className="header text-nowrap">
+                                <Col className="d-none d-md-block counter" md={1}>&nbsp;</Col>
+                                <Col className="moniker" md={2} onClick={(e) => this.toggleDir('moniker',e)}><i className="material-icons">perm_contact_calendar</i> <span className="d-inline-block d-md-none d-lg-inline-block"><T>validators.moniker</T></span> {renderToggleIcon(this.state.monikerDir)} </Col>
+                                <Col className="voting-power" md={3} lg={2} onClick={(e) => this.toggleDir('votingPower',e)}><i className="material-icons">power</i> <span className="d-inline-block d-md-none d-lg-inline-block"><T>common.votingPower</T></span> {renderToggleIcon(this.state.votingPowerDir)} </Col>
+                                <Col className="self-delegation" md={1} onClick={(e) => this.toggleDir('selfDel',e)}><i className="material-icons">equalizer</i> <span className="d-md-none d-lg-inline-block"><T>validators.selfPercentage</T></span> {renderToggleIcon(this.state.selfDelDir==1)} </Col>
+                                {(!this.props.inactive)?<Col className="commission" md={1} lg={2} onClick={(e) => this.toggleDir('commission',e)}><i className="material-icons">call_split</i> <span className="d-inline-block d-md-none d-lg-inline-block"><T>validators.commission</T></span> {renderToggleIcon(this.state.commissionDir==1)}</Col>:''}
+                                {(!this.props.inactive)?<Col className="uptime" md={2} lg={3} onClick={(e) => this.toggleDir('uptime',e)}><i className="material-icons">flash_on</i> <span className="d-inline-block d-md-none d-lg-inline-block"><T>validators.uptime</T> ({Meteor.settings.public.uptimeWindow} <i className="fas fa-cube"></i>)</span> {renderToggleIcon(this.state.uptimeDir==1)}</Col>:''}
+                                {(this.props.inactive)?<Col className="last-seen" md={3}><i className="far fa-clock"></i> <span className="d-md-none d-lg-inline-block"><T>validators.lastSeen</T> (UTC)</span></Col>:''}
+                                {(this.props.inactive)?<Col className="bond-status d-none d-md-block" md={1} onClick={(e) => this.toggleDir('status',e)}><i className="material-icons">toggle_on</i> <span className="d-md-none d-lg-inline-block"><T>validators.status</T></span> {renderToggleIcon(this.state.statusDir)} </Col>:''}
+                                {(this.props.inactive)?<Col className="jail-status d-none d-md-block" md={1} onClick={(e) => this.toggleDir('jailed',e)}><i className="material-icons">lock</i> <span className="d-md-none d-lg-inline-block"><T>validators.jailed</T></span> {renderToggleIcon(this.state.jailedDir)} </Col>:''}
+                            </Row>
+                        </Card>
+                        {(this.props.inactive)?<List
+                            inactive={this.props.inactive}
+                            monikerDir={this.state.monikerDir}
+                            votingPowerDir={this.state.votingPowerDir}
+                            uptimeDir={this.state.uptimeDir}
+                            commissionDir={this.state.commissionDir}
+                            selfDelDir={this.state.selfDelDir}
+                            statusDir={this.state.statusDir}
+                            jailedDir={this.state.jailedDir}
+                            priority={this.state.priority}
+                            status={this.props.status}
+                        />:<List
+                            monikerDir={this.state.monikerDir}
+                            votingPowerDir={this.state.votingPowerDir}
+                            uptimeDir={this.state.uptimeDir}
+                            commissionDir={this.state.commissionDir}
+                            selfDelDir={this.state.selfDelDir}
+                            priority={this.state.priority}
+                        />}
+                    </Col>
+                </Row>
+            </div>
         </div>
     }
 
diff --git a/public/img/sifchain.svg b/public/img/sifchain.svg
new file mode 100644
index 000000000..c54dc4369
--- /dev/null
+++ b/public/img/sifchain.svg
@@ -0,0 +1,3 @@
+<svg width="20" height="36" viewBox="0 0 20 36" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M0.966282 24.1264C0.322094 22.9206 0 21.5008 0 19.8671C0 18.3501 0.253771 16.9984 0.761313 15.812C1.28838 14.6062 1.85448 13.6434 2.45963 12.9238C3.08429 12.1848 3.83585 11.6013 4.71429 11.1734C5.61225 10.7261 6.55901 10.5024 7.55457 10.5024C8.96007 10.5024 10.0825 10.9011 10.9219 11.6985L14.7578 8.48947C14.6797 7.80875 14.6406 7.13776 14.6406 6.4765C14.6406 2.15883 15.7826 0 18.0665 0C18.6522 0 19.1109 0.204214 19.4428 0.612643C19.7746 1.02107 19.9601 1.54619 19.9991 2.18801C20.0186 3.12156 19.7161 4.05511 19.0914 4.98866C18.4862 5.92221 17.5883 6.94327 16.3975 8.05186C17.0027 12.0778 17.3052 14.8201 17.3052 16.2788C17.3052 17.718 17.1198 19.1183 16.7489 20.4797C16.378 21.8217 15.8119 23.047 15.0506 24.1556C14.2893 25.2642 13.2449 26.1297 11.9175 26.752C10.5901 27.3744 9.04792 27.6856 7.29104 27.6856C4.77285 27.6856 2.86957 26.8298 1.58119 25.1183C1.22981 26.3436 1.05413 27.7342 1.05413 29.2901C1.05413 30.8655 1.46406 32.2755 2.28394 33.5203C3.12334 34.7844 4.19698 35.4165 5.50488 35.4165C5.60249 35.4165 5.65129 35.5138 5.65129 35.7083C5.67081 35.9028 5.62201 36 5.50488 36C3.96273 36 2.69388 35.2707 1.69831 33.812C0.702751 32.3728 0.204969 30.7682 0.204969 28.9984C0.204969 27.2285 0.45874 25.6045 0.966282 24.1264ZM11.4197 12.2528C11.9663 12.9919 12.2396 13.8282 12.2396 14.7618C12.2396 15.6759 12.0932 16.5024 11.8004 17.2415C11.5271 17.9611 11.0293 18.6029 10.307 19.1669C9.60426 19.7115 8.78438 19.9838 7.84738 19.9838C7.65217 19.9838 7.49601 19.9352 7.37888 19.8379C7.28128 19.7407 7.21295 19.5851 7.17391 19.3712C8.01331 19.3712 8.78438 18.9822 9.48713 18.2042C10.5022 17.1151 11.0098 15.8898 11.0098 14.5284C11.0098 13.9643 10.9024 13.4198 10.6877 12.8947C8.50133 14.7618 6.65661 16.59 5.15351 18.3793C3.6504 20.1686 2.54747 22.1135 1.84472 24.2139C2.95741 26.0032 4.70453 26.8979 7.08607 26.8979C8.55013 26.8979 9.82875 26.5867 10.9219 25.9643C12.0346 25.3614 12.9033 24.5348 13.528 23.4846C14.7578 21.423 15.3727 18.9238 15.3727 15.987C15.3727 15.2674 15.197 13.0794 14.8456 9.42301L11.4197 12.2528ZM10.2484 12.282C9.62378 11.6207 8.76486 11.2901 7.6717 11.2901C6.57853 11.2901 5.59272 11.5527 4.71429 12.0778C3.09406 13.0502 1.93256 14.684 1.22981 16.9789C0.91748 17.9514 0.761313 18.953 0.761313 19.9838C0.761313 21.1313 0.946761 22.1912 1.31766 23.1637C2.6646 19.799 5.64153 16.1718 10.2484 12.282ZM16.134 4.98866C16.134 5.51378 16.1828 6.21394 16.2804 7.08914C18.213 5.20259 19.1792 3.60778 19.1792 2.3047C19.1792 1.29336 18.8083 0.787683 18.0665 0.787683C16.7782 0.787683 16.134 2.18801 16.134 4.98866Z" fill="white"/>
+</svg>

From 0e9cc8915f066ac5a8d28e3ced333bb02ddfc61e Mon Sep 17 00:00:00 2001
From: 59023g <5235538+59023g@users.noreply.github.com>
Date: Tue, 6 Apr 2021 16:03:01 -0500
Subject: [PATCH 18/74] className, add missing tx query

---
 imports/ui/blocks/BlockContainer.js          | 5 +++--
 imports/ui/blocks/BlocksTable.jsx            | 2 +-
 imports/ui/components/Activities.jsx         | 4 +---
 imports/ui/transactions/TransactionsList.jsx | 4 ++--
 4 files changed, 7 insertions(+), 8 deletions(-)

diff --git a/imports/ui/blocks/BlockContainer.js b/imports/ui/blocks/BlockContainer.js
index 737f30356..560a5c287 100644
--- a/imports/ui/blocks/BlockContainer.js
+++ b/imports/ui/blocks/BlockContainer.js
@@ -47,8 +47,9 @@ export default BlockContainer = withTracker((props) => {
         }).fetch() : {},
         pegTxs: transactionsExist ? Transactions.find({
             $or: [
-                {"tx.value.msg.type":"ethbridge/MsgLock"}, // unpeg?
-                {"tx.value.msg.type":"ethbridge/MsgCreateEthBridgeClaim"}, // peg: non-rowan (lock), rowan (burn)
+                {"tx.value.msg.type":"ethbridge/MsgLock"},
+                {"tx.value.msg.type":"ethbridge/MsgBurn"},
+                {"tx.value.msg.type":"ethbridge/MsgCreateEthBridgeClaim"},
             ]
         }).fetch() : {},        
         transferTxs: transactionsExist ? Transactions.find({
diff --git a/imports/ui/blocks/BlocksTable.jsx b/imports/ui/blocks/BlocksTable.jsx
index 27be91706..6528860a2 100644
--- a/imports/ui/blocks/BlocksTable.jsx
+++ b/imports/ui/blocks/BlocksTable.jsx
@@ -84,7 +84,7 @@ export default class BlocksTable extends Component {
                 <Col md={3} xs={12}><h1 className="d-none d-lg-block"><T>blocks.latestBlocks</T></h1></Col>
                 <Col md={9} xs={12} className="text-md-right"><ChainStates /></Col>
             </Row>
-            <div class="bgw mt15">
+            <div className="bgw mt15">
             <Switch>
                 <Route path="/blocks/:blockId" render={(props)=> <Sidebar 
                     sidebar={<Block {...props} />}
diff --git a/imports/ui/components/Activities.jsx b/imports/ui/components/Activities.jsx
index f0e1193dd..b6e7184ac 100644
--- a/imports/ui/components/Activities.jsx
+++ b/imports/ui/components/Activities.jsx
@@ -69,7 +69,6 @@ export default class Activites extends Component {
   }
 
   render() {
-    // console.log(this.props);
     const msg = this.props.msg;
     const events = [];
     for (let i in this.props.events) {
@@ -324,7 +323,7 @@ export default class Activites extends Component {
                     ).toString(6)}
                 </span>{" "}*/}
                 <JSONPretty id="json-pretty" data={msg.value}></JSONPretty>
-                <span class="quick-note">Swap</span>
+                <span className="quick-note">Swap</span>
             </p>
         )
 
@@ -375,7 +374,6 @@ export default class Activites extends Component {
           <div>
             <JSONPretty id="json-pretty" data={msg.value}></JSONPretty>
             {msg.type}
-            
           </div>
         );
     }
diff --git a/imports/ui/transactions/TransactionsList.jsx b/imports/ui/transactions/TransactionsList.jsx
index 58bb7139c..cada0a77f 100644
--- a/imports/ui/transactions/TransactionsList.jsx
+++ b/imports/ui/transactions/TransactionsList.jsx
@@ -86,13 +86,13 @@ export default class Transactions extends Component{
         return <div id="transactions">
             <Helmet>
                 <title>Latest Transactions on Sifchain | The Big Dipper</title>
-                <meta name="description" content="See what is happening on Cosmos Hub" />
+                <meta name="description" content="See what is happening on Sifchain" />
             </Helmet>
             <Row>
                 <Col md={3} xs={12}><h1 className="d-none d-lg-block"><T>transactions.transactions</T></h1></Col>
                 <Col md={9} xs={12} className="text-md-right"><ChainStates /></Col>
             </Row>
-            <div class="bgw mt15">
+            <div className="bgw mt15">
                 <Switch>
                     <Route path="/transactions/:txId" render={(props)=> <Sidebar 
                         sidebar={<Transaction {...props} />}

From a7d4f46f31673793bd4ea1d7fb9fef02a921f144 Mon Sep 17 00:00:00 2001
From: 59023g <5235538+59023g@users.noreply.github.com>
Date: Tue, 6 Apr 2021 16:14:05 -0500
Subject: [PATCH 19/74] Activities, Header: formatting, Show DEX URL

---
 imports/ui/components/Activities.jsx | 34 ++++++++++++++--------------
 imports/ui/components/Header.jsx     |  9 +++++---
 2 files changed, 23 insertions(+), 20 deletions(-)

diff --git a/imports/ui/components/Activities.jsx b/imports/ui/components/Activities.jsx
index b6e7184ac..f0f90d341 100644
--- a/imports/ui/components/Activities.jsx
+++ b/imports/ui/components/Activities.jsx
@@ -305,7 +305,7 @@ export default class Activites extends Component {
       case "clp/Swap":
           // console.log(getCoinDecimals(msg.value.SentAsset.symbol))
         return (
-            <p>
+            <div>
               {/*<Account address={msg.value.Signer} />{" "}
                 <MsgType type={msg.type} /> &nbsp;
                 <span className="text-success">
@@ -324,47 +324,47 @@ export default class Activites extends Component {
                 </span>{" "}*/}
                 <JSONPretty id="json-pretty" data={msg.value}></JSONPretty>
                 <span className="quick-note">Swap</span>
-            </p>
+            </div>
         )
 
       case "ethbridge/MsgLock":
         return (
-          <p>
+          <div>
               <JSONPretty id="json-pretty" data={msg.value}></JSONPretty>
-              <span class="quick-note">Unpeg</span>
-            </p>
+              <span className="quick-note">Unpeg</span>
+            </div>
           )
 
       case  "ethbridge/MsgBurn":
         return (
-          <p>
+          <div>
               <JSONPretty id="json-pretty" data={msg.value}></JSONPretty>
-              <span class="quick-note">Unpeg</span>
-            </p>
+              <span className="quick-note">Unpeg</span>
+            </div>
           )
 
       case "ethbridge/MsgCreateEthBridgeClaim":
         return (
-          <p>
+          <div>
                 <JSONPretty id="json-pretty" data={msg.value}></JSONPretty>
-                <span class="quick-note">Peg</span>
-            </p>
+                <span className="quick-note">Peg</span>
+            </div>
           )      
 
       case  "clp/AddLiquidity":
         return (
-          <p>
+          <div>
               <JSONPretty id="json-pretty" data={msg.value}></JSONPretty>
-              <span class="quick-note">Add Liquidity</span>
-            </p>
+              <span className="quick-note">Add Liquidity</span>
+            </div>
           )
 
       case  "clp/RemoveLiquidity":
         return (
-          <p>
+          <div>
               <JSONPretty id="json-pretty" data={msg.value}></JSONPretty>
-              <span class="quick-note">Remove Liquidity</span>
-            </p>
+              <span className="quick-note">Remove Liquidity</span>
+            </div>
           )
 
 
diff --git a/imports/ui/components/Header.jsx b/imports/ui/components/Header.jsx
index a60546154..b3f2e2915 100644
--- a/imports/ui/components/Header.jsx
+++ b/imports/ui/components/Header.jsx
@@ -195,9 +195,12 @@ export default class Header extends Component {
                             <NavLink tag={Link} to="/proposals"><T>navbar.proposals</T></NavLink>
                         </NavItem>
                         <NavItem>
-                            <NavLink tag={Link} to="/voting-power-distribution"><T>navbar.votingPower</T></NavLink>
+                            <NavLink tag={Link}  to="/voting-power-distribution"><T>navbar.votingPower</T></NavLink>
                         </NavItem>
-                        <NavItem id="user-acconut-icon">
+                        <NavItem>
+                            <a className="nav-link" href="https://dex.sifchain.finance" target="_blank">Trade</a>
+                        </NavItem>
+{/*                        <NavItem id="user-acconut-icon">
                             {!signedInAddress?<Button className="sign-in-btn" color="link" size="lg" onClick={() => {this.setState({isSignInOpen: true})}}><i className="material-icons">vpn_key</i></Button>:
                                 <span>
                                     <span className="d-lg-none">
@@ -219,7 +222,7 @@ export default class Header extends Component {
                                     </span>
                                 </span>}
                             <LedgerModal isOpen={this.state.isSignInOpen} toggle={this.toggleSignIn} refreshApp={this.props.refreshApp} handleLoginConfirmed={this.shouldLogin()?this.handleLoginConfirmed:null}/>
-                        </NavItem>
+                        </NavItem>*/}
                         <NavItem>
                             <UncontrolledDropdown inNavbar>
                                 <DropdownToggle nav caret>

From f69bbd5621c18e94cef3bd92ddfaed7d4a3a9db1 Mon Sep 17 00:00:00 2001
From: 59023g <5235538+59023g@users.noreply.github.com>
Date: Tue, 6 Apr 2021 17:29:53 -0500
Subject: [PATCH 20/74] api/transactions: get failed transactions

---
 imports/api/transactions/server/publications.js | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/imports/api/transactions/server/publications.js b/imports/api/transactions/server/publications.js
index bc2cad0db..cc6b7a758 100644
--- a/imports/api/transactions/server/publications.js
+++ b/imports/api/transactions/server/publications.js
@@ -28,7 +28,15 @@ publishComposite('transactions.validator', function(validatorAddress, delegatorA
     }
 
     if (!validatorAddress && delegatorAddress){
-        query = {"logs.events.attributes.value":delegatorAddress}
+        query = {$or:[
+            {"logs.events.attributes.value":delegatorAddress}, 
+            {"tx.value.msg.value.cosmos_receiver": delegatorAddress },
+            {"tx.value.msg.value.cosmos_sender": delegatorAddress },
+            {"tx.value.msg.value.delegator_address": delegatorAddress },
+            {"tx.value.msg.value.from_address": delegatorAddress },
+            {"tx.value.msg.value.Signer": delegatorAddress },
+            {"tx.value.msg.value.delegator_address": delegatorAddress },
+            ]}
     }
 
     return {

From eeade0f83225faf23690424257ce2209c131988a Mon Sep 17 00:00:00 2001
From: 59023g <5235538+59023g@users.noreply.github.com>
Date: Fri, 23 Apr 2021 15:51:52 -0500
Subject: [PATCH 21/74] ui/Validator: back to List color

---
 client/styles.scss                  | 3 ++-
 imports/ui/validators/Validator.jsx | 2 +-
 2 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/client/styles.scss b/client/styles.scss
index f88159e68..14c523053 100644
--- a/client/styles.scss
+++ b/client/styles.scss
@@ -35,13 +35,14 @@ h1 { color: white }
 #footer { display: none !important}
 
 .bgw { background: white}
+.cw {color: white}
 
 #validator-list > .card { border: none}
 #validator-list > div.validator-list.row > div > div:nth-child(1) {}
 #validator-list > div.bgw.mt15 > div > div > div{border: none}
 .mt15 { margin-top: 15px}
 .p15 { padding: 15px}
-
+.pl0 {padding-left: 0}
 #main > div:nth-child(3) > div:nth-child(2) > div > div > div.col-md-8 > ul.nav-pills { background: white; padding: 15px}
 #account > div:nth-child(2) > div > h3 > span > i { color: #343434 !important }
 #account > div:nth-child(2) > div > h3 > span > span {overflow: hidden !important}
diff --git a/imports/ui/validators/Validator.jsx b/imports/ui/validators/Validator.jsx
index 246cdb443..730eff5ed 100644
--- a/imports/ui/validators/Validator.jsx
+++ b/imports/ui/validators/Validator.jsx
@@ -194,7 +194,7 @@ export default class Validator extends Component{
                         <meta name="description" content={details} />
                     </Helmet>
                     <Col xs={12}>
-                        <Link to="/validators" className="btn btn-link"><i className="fas fa-caret-left"></i> <T>common.backToList</T></Link>
+                        <Link to="/validators" className="btn btn-link cw pl0"><i className="fas fa-caret-left"></i> <T>common.backToList</T></Link>
                     </Col>
                     <Col md={4}>
                         <Card body className="text-center">

From 47db3be8c3a7a20f176e2c675a2960acfe6ef746 Mon Sep 17 00:00:00 2001
From: 59023g <5235538+59023g@users.noreply.github.com>
Date: Fri, 23 Apr 2021 15:52:04 -0500
Subject: [PATCH 22/74] ui/Transaction: Fee fix

---
 imports/ui/transactions/Transaction.jsx | 12 +-----------
 1 file changed, 1 insertion(+), 11 deletions(-)

diff --git a/imports/ui/transactions/Transaction.jsx b/imports/ui/transactions/Transaction.jsx
index 46462c41a..f76e63757 100644
--- a/imports/ui/transactions/Transaction.jsx
+++ b/imports/ui/transactions/Transaction.jsx
@@ -106,17 +106,7 @@ export default class Transaction extends Component {
                         return (
                           <span className="text-nowrap" key={i}>
                             {" "}
-                            {fee.amount /
-                              Meteor.settings.public.stakingFraction >=
-                            1
-                              ? new Coin(
-                                  parseFloat(fee.amount),
-                                  fee.denom
-                                ).stakeString()
-                              : new Coin(
-                                  parseFloat(fee.amount),
-                                  fee.denom
-                                ).mintString()}{" "}
+                            {new Coin(fee.amount, fee.denom).stakeString()}
                           </span>
                         );
                       })

From 86b03e9adbece724d54c159296baf4f1aae29078 Mon Sep 17 00:00:00 2001
From: 59023g <5235538+59023g@users.noreply.github.com>
Date: Fri, 23 Apr 2021 15:52:24 -0500
Subject: [PATCH 23/74] ui/ChainState: remove Market Cap and Inflation

---
 imports/ui/components/ChainStates.jsx | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/imports/ui/components/ChainStates.jsx b/imports/ui/components/ChainStates.jsx
index a5655ca6d..cb58b3630 100644
--- a/imports/ui/components/ChainStates.jsx
+++ b/imports/ui/components/ChainStates.jsx
@@ -85,8 +85,8 @@ export default class ChainStates extends Component{
             <CardHeader>
                 <Row className="text-nowrap">
                     <Col xs={4} md="auto"><small><span><T>chainStates.price</T>:</span> <strong>${this.state.price}</strong></small></Col>
-                    <Col xs={8} md="auto"><small><span><T>chainStates.marketCap</T>:</span> <strong>{this.state.marketCap}</strong></small></Col>
-                    <Col xs={4} md="auto"><small><span><T>chainStates.inflation</T>:</span> <strong>{this.state.inflation}</strong></small></Col>
+                    {/*<Col xs={8} md="auto"><small><span><T>chainStates.marketCap</T>:</span> <strong>{this.state.marketCap}</strong></small></Col>*/}
+                    {/*<Col xs={4} md="auto"><small><span><T>chainStates.inflation</T>:</span> <strong>{this.state.inflation}</strong></small></Col>*/}
                     <Col xs={8} md="auto"><small><span><T>chainStates.communityPool</T>:</span> <strong>{(this.renderValues(this.state.communityPool))}</strong></small></Col>
                 </Row>
             </CardHeader>

From 5eef11acb316493138bea1d9ca8c5db1ff1443e8 Mon Sep 17 00:00:00 2001
From: 59023g <5235538+59023g@users.noreply.github.com>
Date: Fri, 23 Apr 2021 15:53:34 -0500
Subject: [PATCH 24/74] ui/Activites: Swap copy

---
 imports/ui/components/Activities.jsx | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/imports/ui/components/Activities.jsx b/imports/ui/components/Activities.jsx
index f0f90d341..0c08a4d07 100644
--- a/imports/ui/components/Activities.jsx
+++ b/imports/ui/components/Activities.jsx
@@ -306,7 +306,7 @@ export default class Activites extends Component {
           // console.log(getCoinDecimals(msg.value.SentAsset.symbol))
         return (
             <div>
-              {/*<Account address={msg.value.Signer} />{" "}
+              <Account address={msg.value.Signer} />{" "}
                 <MsgType type={msg.type} /> &nbsp;
                 <span className="text-success">
                     {new Coin(
@@ -321,9 +321,7 @@ export default class Activites extends Component {
                         msg.value.MinReceivingAmount,
                         msg.value.ReceivedAsset.symbol
                     ).toString(6)}
-                </span>{" "}*/}
-                <JSONPretty id="json-pretty" data={msg.value}></JSONPretty>
-                <span className="quick-note">Swap</span>
+                </span>{" "}
             </div>
         )
 

From 531ace606b88e60a22b3044d0e79434b76c84eb4 Mon Sep 17 00:00:00 2001
From: 59023g <5235538+59023g@users.noreply.github.com>
Date: Fri, 23 Apr 2021 15:54:05 -0500
Subject: [PATCH 25/74] utils/coins: number format

---
 both/utils/coins.js | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/both/utils/coins.js b/both/utils/coins.js
index 4cd96fe19..b56d89188 100644
--- a/both/utils/coins.js
+++ b/both/utils/coins.js
@@ -58,8 +58,8 @@ export default class Coin {
 	toString (precision) {
 		// default to display in mint denom if it has more than 4 decimal places
 		let minStake = Coin.StakingCoin.fraction/(precision?Math.pow(10, precision):10000)
-		// console.log('minStake', this.amount, minStake)
-		if (this.amount < minStake) {
+		// console.log(this._coin.denom, this._coin)
+		if ((this.amount < minStake) && this._coin.demon === "rowan") {
 			return `${numbro(this.amount).format('0,0.0000' )} ${this._coin.denom}`;
 		} else {
 			return `${precision?numbro(this.stakingAmount).format('0,0.' + '0'.repeat(precision)):autoformat(this.stakingAmount)} ${this._coin.displayName}`

From e1979066db4a47bbdf532ecf8070918b70773461 Mon Sep 17 00:00:00 2001
From: intl-man <theinternationalman079@gmail.com>
Date: Tue, 27 Apr 2021 15:08:23 +0800
Subject: [PATCH 26/74] Updated Sifchain changelog.

---
 SIFCHAIN_CHANGELOG.md | 11 +++++++++++
 1 file changed, 11 insertions(+)
 create mode 100644 SIFCHAIN_CHANGELOG.md

diff --git a/SIFCHAIN_CHANGELOG.md b/SIFCHAIN_CHANGELOG.md
new file mode 100644
index 000000000..dd4ef9606
--- /dev/null
+++ b/SIFCHAIN_CHANGELOG.md
@@ -0,0 +1,11 @@
+
+----
+
+# v0.2.0
+> April 27, 2021
+
+## 🐛 Bug Fixes
+
+- [UI] Transaction fee is confusing on the transaction page (rowan vs ROWAN).
+- [UI] Decimal formatting updates for cUSDT.
+- [UI] Color rixes for the "Back to list" option on the validator page.

From 6788c2abf2468f315d7226cc9bb839e19f424c44 Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Tue, 18 May 2021 20:17:23 -0600
Subject: [PATCH 27/74] added trigger pipeline for downstream automation jobs

---
 .../devnet_on_merge_trigger_deploy.yml        | 36 +++++++++++++++++++
 1 file changed, 36 insertions(+)
 create mode 100644 .github/workflows/devnet_on_merge_trigger_deploy.yml

diff --git a/.github/workflows/devnet_on_merge_trigger_deploy.yml b/.github/workflows/devnet_on_merge_trigger_deploy.yml
new file mode 100644
index 000000000..5a344f0e0
--- /dev/null
+++ b/.github/workflows/devnet_on_merge_trigger_deploy.yml
@@ -0,0 +1,36 @@
+name: Trigger DevNet Block Explorer Build And Deploy Pipeline
+on:
+  push:
+    branches:
+      - 'develop'
+      - 'testnet'
+      - 'master'
+
+jobs:
+  DevNet:
+    name: Trigger Block Explorer Pipeline
+    runs-on: ubuntu-latest
+    if: ${{ github.ref == 'refs/heads/develop' }}
+    steps:
+      - name: DevNet Trigger Block Explorer Pipeline
+        uses: mvasigh/dispatch-action@main
+        with:
+          # You should create a personal access token and store it in your repository
+          token: ${{ secrets.CHAINOPS_ACCESS_TOKEN }}
+          repo: chainOps
+          owner: Sifchain
+          event_type: build_bigdipper
+          message: |
+            {
+              "aws_region": "us-east-2",
+              "target_big_dipper_branch": "develop",
+              "app_region": "us",
+              "aws_cluster_name": "sifchain-aws-devnet-us",
+              "aws_role": "arn:aws:iam::346064283538:role/OrganizationAccountAccessRole",
+              "app_namespace": "block-explorer",
+              "image": "sifchain/block-explorer",
+              "image_tag": "devnet-0.2.0",
+              "env": "data",
+              "app_name": "block-explorer",
+              "app_env": "data"
+            }

From a6998b6335be9b414252d480af4e0d533a435b65 Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Tue, 18 May 2021 20:33:30 -0600
Subject: [PATCH 28/74] updated the workflow trigger cluster name was wrong

---
 .github/workflows/devnet_on_merge_trigger_deploy.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/devnet_on_merge_trigger_deploy.yml b/.github/workflows/devnet_on_merge_trigger_deploy.yml
index 5a344f0e0..06a9f510f 100644
--- a/.github/workflows/devnet_on_merge_trigger_deploy.yml
+++ b/.github/workflows/devnet_on_merge_trigger_deploy.yml
@@ -25,7 +25,7 @@ jobs:
               "aws_region": "us-east-2",
               "target_big_dipper_branch": "develop",
               "app_region": "us",
-              "aws_cluster_name": "sifchain-aws-devnet-us",
+              "aws_cluster_name": "sifchain-aws-devnet-data",
               "aws_role": "arn:aws:iam::346064283538:role/OrganizationAccountAccessRole",
               "app_namespace": "block-explorer",
               "image": "sifchain/block-explorer",

From 043288f6c96668a2b3e7698bbfbccfac3b4b8dc2 Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Tue, 18 May 2021 22:19:15 -0600
Subject: [PATCH 29/74] Added testnet to the workflow trigger so it will
 trigger testnet pipeline when there is a merge to testnet

---
 .../devnet_on_merge_trigger_deploy.yml        | 27 ++++++++++++++++++-
 1 file changed, 26 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/devnet_on_merge_trigger_deploy.yml b/.github/workflows/devnet_on_merge_trigger_deploy.yml
index 06a9f510f..712d14b19 100644
--- a/.github/workflows/devnet_on_merge_trigger_deploy.yml
+++ b/.github/workflows/devnet_on_merge_trigger_deploy.yml
@@ -10,9 +10,9 @@ jobs:
   DevNet:
     name: Trigger Block Explorer Pipeline
     runs-on: ubuntu-latest
-    if: ${{ github.ref == 'refs/heads/develop' }}
     steps:
       - name: DevNet Trigger Block Explorer Pipeline
+        if: ${{ github.ref == 'refs/heads/develop' }}
         uses: mvasigh/dispatch-action@main
         with:
           # You should create a personal access token and store it in your repository
@@ -34,3 +34,28 @@ jobs:
               "app_name": "block-explorer",
               "app_env": "data"
             }
+
+
+      - name: TestNet Trigger Block Explorer Pipeline
+        if: ${{ github.ref == 'refs/heads/testnet' }}
+        uses: mvasigh/dispatch-action@main
+        with:
+          # You should create a personal access token and store it in your repository
+          token: ${{ secrets.CHAINOPS_ACCESS_TOKEN }}
+          repo: chainOps
+          owner: Sifchain
+          event_type: build_bigdipper
+          message: |
+            {
+              "aws_region": "us-east-2",
+              "target_big_dipper_branch": "testnet",
+              "app_region": "us",
+              "aws_cluster_name": "sifchain-aws-testnet-data",
+              "aws_role": "arn:aws:iam::346064283538:role/OrganizationAccountAccessRole",
+              "app_namespace": "block-explorer",
+              "image": "sifchain/block-explorer",
+              "image_tag": "testnet-0.2.0",
+              "env": "data",
+              "app_name": "block-explorer",
+              "app_env": "data"
+            }
\ No newline at end of file

From a1b66fcfa5b25e52fb8c6733d4b4a895be3d37fb Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Wed, 19 May 2021 19:20:21 -0600
Subject: [PATCH 30/74] Added version files and cat varion and set variable
 step in git pipeline

---
 .../devnet_on_merge_trigger_deploy.yml         | 18 ++++++++++++++++--
 versions/devnet/version                        |  1 +
 versions/mainnet/version                       |  1 +
 versions/testnet/version                       |  1 +
 4 files changed, 19 insertions(+), 2 deletions(-)
 create mode 100644 versions/devnet/version
 create mode 100644 versions/mainnet/version
 create mode 100644 versions/testnet/version

diff --git a/.github/workflows/devnet_on_merge_trigger_deploy.yml b/.github/workflows/devnet_on_merge_trigger_deploy.yml
index 712d14b19..c1cfd946c 100644
--- a/.github/workflows/devnet_on_merge_trigger_deploy.yml
+++ b/.github/workflows/devnet_on_merge_trigger_deploy.yml
@@ -11,6 +11,20 @@ jobs:
     name: Trigger Block Explorer Pipeline
     runs-on: ubuntu-latest
     steps:
+      - name: Set version devnet
+        if: ${{ github.ref == 'refs/heads/develop' }}
+        run: |
+          VER=$(cat versions/devnet/version)
+          echo $VER
+          echo "VERSION=$VER" >> $GITHUB_ENV
+
+      - name: Set version testnet
+        if: ${{ github.ref == 'refs/heads/testnet' }}
+        run: |
+          VER=$(cat versions/devnet/version)
+          echo $VER
+          echo "VERSION=$VER" >> $GITHUB_ENV
+
       - name: DevNet Trigger Block Explorer Pipeline
         if: ${{ github.ref == 'refs/heads/develop' }}
         uses: mvasigh/dispatch-action@main
@@ -29,7 +43,7 @@ jobs:
               "aws_role": "arn:aws:iam::346064283538:role/OrganizationAccountAccessRole",
               "app_namespace": "block-explorer",
               "image": "sifchain/block-explorer",
-              "image_tag": "devnet-0.2.0",
+              "image_tag": "${{ env.VERSION }}",
               "env": "data",
               "app_name": "block-explorer",
               "app_env": "data"
@@ -54,7 +68,7 @@ jobs:
               "aws_role": "arn:aws:iam::346064283538:role/OrganizationAccountAccessRole",
               "app_namespace": "block-explorer",
               "image": "sifchain/block-explorer",
-              "image_tag": "testnet-0.2.0",
+              "image_tag": "${{ env.VERSION }}",
               "env": "data",
               "app_name": "block-explorer",
               "app_env": "data"
diff --git a/versions/devnet/version b/versions/devnet/version
new file mode 100644
index 000000000..dc130c0b2
--- /dev/null
+++ b/versions/devnet/version
@@ -0,0 +1 @@
+devnet-0.2.0
\ No newline at end of file
diff --git a/versions/mainnet/version b/versions/mainnet/version
new file mode 100644
index 000000000..c184ed912
--- /dev/null
+++ b/versions/mainnet/version
@@ -0,0 +1 @@
+mainnet-0.2.0
\ No newline at end of file
diff --git a/versions/testnet/version b/versions/testnet/version
new file mode 100644
index 000000000..c69a3072d
--- /dev/null
+++ b/versions/testnet/version
@@ -0,0 +1 @@
+testnet-0.2.0
\ No newline at end of file

From 1303abae45f4c23b6105d15e88edfdec6920596c Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Wed, 19 May 2021 19:26:10 -0600
Subject: [PATCH 31/74] Added version files and cat varion and set variable
 step in git pipeline

---
 .../devnet_on_merge_trigger_deploy.yml        | 33 ++++++++++++++++++-
 1 file changed, 32 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/devnet_on_merge_trigger_deploy.yml b/.github/workflows/devnet_on_merge_trigger_deploy.yml
index c1cfd946c..0cab411f6 100644
--- a/.github/workflows/devnet_on_merge_trigger_deploy.yml
+++ b/.github/workflows/devnet_on_merge_trigger_deploy.yml
@@ -5,7 +5,7 @@ on:
       - 'develop'
       - 'testnet'
       - 'master'
-
+      - 'adding-trigger-pipeline'
 jobs:
   DevNet:
     name: Trigger Block Explorer Pipeline
@@ -18,6 +18,14 @@ jobs:
           echo $VER
           echo "VERSION=$VER" >> $GITHUB_ENV
 
+      - name: Set version dding-trigger-pipeline
+        if: ${{ github.ref == 'refs/heads/adding-trigger-pipeline' }}
+        run: |
+          ls -lah
+          VER=$(cat versions/devnet/version)
+          echo $VER
+          echo "VERSION=$VER" >> $GITHUB_ENV
+
       - name: Set version testnet
         if: ${{ github.ref == 'refs/heads/testnet' }}
         run: |
@@ -49,6 +57,29 @@ jobs:
               "app_env": "data"
             }
 
+      - name: adding-trigger-pipeline Trigger Block Explorer Pipeline
+        if: ${{ github.ref == 'refs/heads/adding-trigger-pipeline' }}
+        uses: mvasigh/dispatch-action@main
+        with:
+          # You should create a personal access token and store it in your repository
+          token: ${{ secrets.CHAINOPS_ACCESS_TOKEN }}
+          repo: chainOps
+          owner: Sifchain
+          event_type: build_bigdipper
+          message: |
+            {
+              "aws_region": "us-east-2",
+              "target_big_dipper_branch": "develop",
+              "app_region": "us",
+              "aws_cluster_name": "sifchain-aws-devnet-data",
+              "aws_role": "arn:aws:iam::346064283538:role/OrganizationAccountAccessRole",
+              "app_namespace": "block-explorer",
+              "image": "sifchain/block-explorer",
+              "image_tag": "${{ env.VERSION }}",
+              "env": "data",
+              "app_name": "block-explorer",
+              "app_env": "data"
+            }
 
       - name: TestNet Trigger Block Explorer Pipeline
         if: ${{ github.ref == 'refs/heads/testnet' }}

From 0a2e91055afdd0d3e764e9ab147983bfeebe0911 Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Wed, 19 May 2021 19:28:51 -0600
Subject: [PATCH 32/74] Added version files and cat varion and set variable
 step in git pipeline

---
 .github/workflows/devnet_on_merge_trigger_deploy.yml | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/.github/workflows/devnet_on_merge_trigger_deploy.yml b/.github/workflows/devnet_on_merge_trigger_deploy.yml
index 0cab411f6..fb582bc9d 100644
--- a/.github/workflows/devnet_on_merge_trigger_deploy.yml
+++ b/.github/workflows/devnet_on_merge_trigger_deploy.yml
@@ -11,6 +11,8 @@ jobs:
     name: Trigger Block Explorer Pipeline
     runs-on: ubuntu-latest
     steps:
+      - uses: actions/checkout@v2
+
       - name: Set version devnet
         if: ${{ github.ref == 'refs/heads/develop' }}
         run: |

From 16e3bccc73f31de86c5b9200cf32a15880ca44b3 Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Wed, 19 May 2021 19:46:48 -0600
Subject: [PATCH 33/74] Added version files and cat varion and set variable
 step in git pipeline

---
 .github/workflows/devnet_on_merge_trigger_deploy.yml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/.github/workflows/devnet_on_merge_trigger_deploy.yml b/.github/workflows/devnet_on_merge_trigger_deploy.yml
index fb582bc9d..8dd74084f 100644
--- a/.github/workflows/devnet_on_merge_trigger_deploy.yml
+++ b/.github/workflows/devnet_on_merge_trigger_deploy.yml
@@ -23,7 +23,6 @@ jobs:
       - name: Set version dding-trigger-pipeline
         if: ${{ github.ref == 'refs/heads/adding-trigger-pipeline' }}
         run: |
-          ls -lah
           VER=$(cat versions/devnet/version)
           echo $VER
           echo "VERSION=$VER" >> $GITHUB_ENV

From 12f28a751f1db4371cb4bcad81fd6c04da195d5c Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Wed, 19 May 2021 20:56:14 -0600
Subject: [PATCH 34/74] disabled the git build and push from bigdipper release
 yaml because the down stream pipeline will create it

---
 .github/workflows/release.yml | 18 +++++++++---------
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index c617a9b40..abd8edc79 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -12,16 +12,16 @@ jobs:
       - name: Check out the repo
         uses: actions/checkout@v2
 
-      - name: Login to Docker Hub
-        run: docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_TOKEN }}
+#      - name: Login to Docker Hub
+#        run: docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_TOKEN }}
 
       - name: Inject slug/short variables
         uses: rlespinasse/github-slug-action@v2.x
 
-      - name: Build docker image
-        run: |
-          docker build -t sifchain/block-explorer:${{ env.GITHUB_REF_SLUG }} .
-
-      - name: Push docker images
-        run: |
-          docker push sifchain/block-explorer:${{ env.GITHUB_REF_SLUG }}
+#      - name: Build docker image
+#        run: |
+#          docker build -t sifchain/block-explorer:${{ env.GITHUB_REF_SLUG }} .
+#
+#      - name: Push docker images
+#        run: |
+#          docker push sifchain/block-explorer:${{ env.GITHUB_REF_SLUG }}

From 926591e2ab7d4692e3c85116f74d65f8838a8efc Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Wed, 19 May 2021 21:48:47 -0600
Subject: [PATCH 35/74] upped the devnet version for testing

---
 versions/devnet/version | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/versions/devnet/version b/versions/devnet/version
index dc130c0b2..5a691ba8b 100644
--- a/versions/devnet/version
+++ b/versions/devnet/version
@@ -1 +1 @@
-devnet-0.2.0
\ No newline at end of file
+devnet-0.2.1
\ No newline at end of file

From f61208aa82b5812bffc1db70c712296b17fdd3f9 Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Wed, 19 May 2021 22:48:44 -0600
Subject: [PATCH 36/74] removed debugging trigger its working as intended now

---
 .../devnet_on_merge_trigger_deploy.yml        | 33 +------------------
 1 file changed, 1 insertion(+), 32 deletions(-)

diff --git a/.github/workflows/devnet_on_merge_trigger_deploy.yml b/.github/workflows/devnet_on_merge_trigger_deploy.yml
index 8dd74084f..646fe99a8 100644
--- a/.github/workflows/devnet_on_merge_trigger_deploy.yml
+++ b/.github/workflows/devnet_on_merge_trigger_deploy.yml
@@ -5,7 +5,7 @@ on:
       - 'develop'
       - 'testnet'
       - 'master'
-      - 'adding-trigger-pipeline'
+
 jobs:
   DevNet:
     name: Trigger Block Explorer Pipeline
@@ -20,13 +20,6 @@ jobs:
           echo $VER
           echo "VERSION=$VER" >> $GITHUB_ENV
 
-      - name: Set version dding-trigger-pipeline
-        if: ${{ github.ref == 'refs/heads/adding-trigger-pipeline' }}
-        run: |
-          VER=$(cat versions/devnet/version)
-          echo $VER
-          echo "VERSION=$VER" >> $GITHUB_ENV
-
       - name: Set version testnet
         if: ${{ github.ref == 'refs/heads/testnet' }}
         run: |
@@ -58,30 +51,6 @@ jobs:
               "app_env": "data"
             }
 
-      - name: adding-trigger-pipeline Trigger Block Explorer Pipeline
-        if: ${{ github.ref == 'refs/heads/adding-trigger-pipeline' }}
-        uses: mvasigh/dispatch-action@main
-        with:
-          # You should create a personal access token and store it in your repository
-          token: ${{ secrets.CHAINOPS_ACCESS_TOKEN }}
-          repo: chainOps
-          owner: Sifchain
-          event_type: build_bigdipper
-          message: |
-            {
-              "aws_region": "us-east-2",
-              "target_big_dipper_branch": "develop",
-              "app_region": "us",
-              "aws_cluster_name": "sifchain-aws-devnet-data",
-              "aws_role": "arn:aws:iam::346064283538:role/OrganizationAccountAccessRole",
-              "app_namespace": "block-explorer",
-              "image": "sifchain/block-explorer",
-              "image_tag": "${{ env.VERSION }}",
-              "env": "data",
-              "app_name": "block-explorer",
-              "app_env": "data"
-            }
-
       - name: TestNet Trigger Block Explorer Pipeline
         if: ${{ github.ref == 'refs/heads/testnet' }}
         uses: mvasigh/dispatch-action@main

From 86d394b2a009e3cde552e8fa35efdd9086ffc4d4 Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Thu, 20 May 2021 19:21:04 -0600
Subject: [PATCH 37/74] updated the way it passes version

---
 .github/workflows/devnet_on_merge_trigger_deploy.yml | 6 ++++--
 versions/devnet/version                              | 2 +-
 versions/mainnet/version                             | 2 +-
 versions/testnet/version                             | 2 +-
 4 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/.github/workflows/devnet_on_merge_trigger_deploy.yml b/.github/workflows/devnet_on_merge_trigger_deploy.yml
index 646fe99a8..653398c09 100644
--- a/.github/workflows/devnet_on_merge_trigger_deploy.yml
+++ b/.github/workflows/devnet_on_merge_trigger_deploy.yml
@@ -45,7 +45,8 @@ jobs:
               "aws_role": "arn:aws:iam::346064283538:role/OrganizationAccountAccessRole",
               "app_namespace": "block-explorer",
               "image": "sifchain/block-explorer",
-              "image_tag": "${{ env.VERSION }}",
+              "image_tag": "devnet-${{ env.VERSION }}",
+              "version": "${{ env.VERSION }}",
               "env": "data",
               "app_name": "block-explorer",
               "app_env": "data"
@@ -69,7 +70,8 @@ jobs:
               "aws_role": "arn:aws:iam::346064283538:role/OrganizationAccountAccessRole",
               "app_namespace": "block-explorer",
               "image": "sifchain/block-explorer",
-              "image_tag": "${{ env.VERSION }}",
+              "image_tag": "testnet-${{ env.VERSION }}",
+              "version": "${{ env.VERSION }}",
               "env": "data",
               "app_name": "block-explorer",
               "app_env": "data"
diff --git a/versions/devnet/version b/versions/devnet/version
index 5a691ba8b..7dff5b892 100644
--- a/versions/devnet/version
+++ b/versions/devnet/version
@@ -1 +1 @@
-devnet-0.2.1
\ No newline at end of file
+0.2.1
\ No newline at end of file
diff --git a/versions/mainnet/version b/versions/mainnet/version
index c184ed912..341cf11fa 100644
--- a/versions/mainnet/version
+++ b/versions/mainnet/version
@@ -1 +1 @@
-mainnet-0.2.0
\ No newline at end of file
+0.2.0
\ No newline at end of file
diff --git a/versions/testnet/version b/versions/testnet/version
index c69a3072d..341cf11fa 100644
--- a/versions/testnet/version
+++ b/versions/testnet/version
@@ -1 +1 @@
-testnet-0.2.0
\ No newline at end of file
+0.2.0
\ No newline at end of file

From 7ce7d9edcf70fcdf51f7845fc6d169375ef1d843 Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Fri, 21 May 2021 22:42:33 -0600
Subject: [PATCH 38/74] changed version to single file

---
 .github/workflows/devnet_on_merge_trigger_deploy.yml | 12 ++----------
 versions/mainnet/version                             |  1 -
 versions/testnet/version                             |  1 -
 versions/{devnet => }/version                        |  0
 4 files changed, 2 insertions(+), 12 deletions(-)
 delete mode 100644 versions/mainnet/version
 delete mode 100644 versions/testnet/version
 rename versions/{devnet => }/version (100%)

diff --git a/.github/workflows/devnet_on_merge_trigger_deploy.yml b/.github/workflows/devnet_on_merge_trigger_deploy.yml
index 653398c09..f79dce58a 100644
--- a/.github/workflows/devnet_on_merge_trigger_deploy.yml
+++ b/.github/workflows/devnet_on_merge_trigger_deploy.yml
@@ -13,17 +13,9 @@ jobs:
     steps:
       - uses: actions/checkout@v2
 
-      - name: Set version devnet
-        if: ${{ github.ref == 'refs/heads/develop' }}
-        run: |
-          VER=$(cat versions/devnet/version)
-          echo $VER
-          echo "VERSION=$VER" >> $GITHUB_ENV
-
-      - name: Set version testnet
-        if: ${{ github.ref == 'refs/heads/testnet' }}
+      - name: Set version
         run: |
-          VER=$(cat versions/devnet/version)
+          VER=$(cat versions/version)
           echo $VER
           echo "VERSION=$VER" >> $GITHUB_ENV
 
diff --git a/versions/mainnet/version b/versions/mainnet/version
deleted file mode 100644
index 341cf11fa..000000000
--- a/versions/mainnet/version
+++ /dev/null
@@ -1 +0,0 @@
-0.2.0
\ No newline at end of file
diff --git a/versions/testnet/version b/versions/testnet/version
deleted file mode 100644
index 341cf11fa..000000000
--- a/versions/testnet/version
+++ /dev/null
@@ -1 +0,0 @@
-0.2.0
\ No newline at end of file
diff --git a/versions/devnet/version b/versions/version
similarity index 100%
rename from versions/devnet/version
rename to versions/version

From c7c0bd4cb033fa58d11965999d92c30afbbeff24 Mon Sep 17 00:00:00 2001
From: intl-man <theinternationalman079@gmail.com>
Date: Fri, 4 Jun 2021 21:01:23 +0800
Subject: [PATCH 39/74] Version bump.

---
 versions/version | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/versions/version b/versions/version
index 7dff5b892..ee1372d33 100644
--- a/versions/version
+++ b/versions/version
@@ -1 +1 @@
-0.2.1
\ No newline at end of file
+0.2.2

From 2a01f80bb218cf4b1d3e528bc23e7cc912c21b7a Mon Sep 17 00:00:00 2001
From: Andrew Joslin <andrewtjoslin@gmail.com>
Date: Fri, 18 Jun 2021 06:55:56 -0700
Subject: [PATCH 40/74] Fix style issues

---
 client/styles.scss                       | 22 ++++++++++++++++++++--
 imports/ui/validators/ValidatorsList.jsx |  3 +--
 2 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/client/styles.scss b/client/styles.scss
index 4d843291c..5f30c4675 100644
--- a/client/styles.scss
+++ b/client/styles.scss
@@ -47,7 +47,6 @@ h1 { color: white }
 #account > div:nth-child(2) > div > h3 > span > i { color: #343434 !important }
 #account > div:nth-child(2) > div > h3 > span > span {overflow: hidden !important}
 
-
 ::placeholder { color: white !important; opacity: 1}
 body {
     font-size: inherit !important;
@@ -1117,4 +1116,23 @@ body {
     font-size: 18px;
     cursor: help;
     opacity: 0.7;
-  }
\ No newline at end of file
+  }
+
+table {
+  background-color: white;
+}
+.status-switch {
+  background-color: white;
+  margin-top: 8px;
+}
+.validator-list {
+  padding-left: 0 !important;
+  padding-right: 0 !important;
+  .row {
+    margin: 0;
+  }
+  .card-body {
+    border: none;
+    border-radius: 0;
+  }
+}
diff --git a/imports/ui/validators/ValidatorsList.jsx b/imports/ui/validators/ValidatorsList.jsx
index c79b39a21..f00d1c9b6 100644
--- a/imports/ui/validators/ValidatorsList.jsx
+++ b/imports/ui/validators/ValidatorsList.jsx
@@ -84,7 +84,7 @@ export default class Validators extends Component{
                 <Col lg={3} xs={12}><h1 className="d-none d-lg-block">{title}</h1></Col>
                 <Col lg={9} xs={12} className="text-lg-right"><ChainStates /></Col>
             </Row>
-            <Nav pills className="status-switch">
+            <Nav pills className="status-switch p15">
                 <NavItem>
                     <NavLink tag={Link} to="/validators" active={(this.props.match.url == "/validators")}><T>validators.navActive</T></NavLink>
                 </NavItem>
@@ -95,7 +95,6 @@ export default class Validators extends Component{
                     </NavLink>
                 </NavItem>
             </Nav>
-            <p className="lead">{desc}</p>
             <Row className="validator-list">
                 <Col md={12}>
                     <Card body>

From 92e8ba465659812473bb295ec2425dce4755acb4 Mon Sep 17 00:00:00 2001
From: Andrew Joslin <andrewtjoslin@gmail.com>
Date: Fri, 18 Jun 2021 06:57:26 -0700
Subject: [PATCH 41/74] Add lint

---
 imports/api/transactions/server/publications.js | 2 +-
 imports/ui/components/Header.jsx                | 6 +++---
 imports/ui/components/MsgType.jsx               | 4 ++--
 3 files changed, 6 insertions(+), 6 deletions(-)

diff --git a/imports/api/transactions/server/publications.js b/imports/api/transactions/server/publications.js
index 5ab416b4f..f000be793 100644
--- a/imports/api/transactions/server/publications.js
+++ b/imports/api/transactions/server/publications.js
@@ -38,7 +38,7 @@ publishComposite('transactions.validator', function(validatorAddress, delegatorA
             {"tx.value.msg.value.Signer": delegatorAddress },
             {"tx.value.msg.value.delegator_address": delegatorAddress },
             {"tx_response.logs.events.attributes.value":delegatorAddress},
-            ]}
+        ]}
     }
 
     return {
diff --git a/imports/ui/components/Header.jsx b/imports/ui/components/Header.jsx
index e619ef350..58e5c7be6 100644
--- a/imports/ui/components/Header.jsx
+++ b/imports/ui/components/Header.jsx
@@ -174,10 +174,10 @@ export default class Header extends Component {
             <Navbar color="primary" dark expand="lg" fixed="top" id="header">
                 <NavbarBrand tag={Link} to="/">
                     <img src="/img/sifchain.svg" className="img-fluid logo"/> 
-{/*                    <span className="d-none d-xl-inline-block"><T>navbar.siteName</T>&nbsp;</span>
+                    {/*                    <span className="d-none d-xl-inline-block"><T>navbar.siteName</T>&nbsp;</span>
                     <Badge color="secondary">{this.state.version}</Badge> */}
                 </NavbarBrand>
-{/*                <UncontrolledDropdown className="d-inline text-nowrap">
+                {/*                <UncontrolledDropdown className="d-inline text-nowrap">
                     <DropdownToggle caret={(this.state.networks !== "")} tag="span" size="sm" id="network-nav">{Meteor.settings.public.chainId}</DropdownToggle>
                     {this.state.networks}
                 </UncontrolledDropdown>*/}
@@ -203,7 +203,7 @@ export default class Header extends Component {
                         <NavItem>
                             <a className="nav-link" href="https://dex.sifchain.finance" target="_blank">Trade</a>
                         </NavItem>
-{/*                        <NavItem id="user-acconut-icon">
+                        {/*                        <NavItem id="user-acconut-icon">
                             {!signedInAddress?<Button className="sign-in-btn" color="link" size="lg" onClick={() => {this.setState({isSignInOpen: true})}}><i className="material-icons">vpn_key</i></Button>:
                                 <span>
                                     <span className="d-lg-none">
diff --git a/imports/ui/components/MsgType.jsx b/imports/ui/components/MsgType.jsx
index 9b984bc94..66e95a65c 100644
--- a/imports/ui/components/MsgType.jsx
+++ b/imports/ui/components/MsgType.jsx
@@ -49,8 +49,8 @@ export const MsgType = (props) => {
         return <Badge color="dark"><T>messageTypes.IBCTransfer</T></Badge>;
     case "/cosmos.IBCReceiveMsg":
         return <Badge color="dark"><T>messageTypes.IBCReceive</T></Badge>;
-      // clp
-      case "clp/Swap":
+        // clp
+    case "clp/Swap":
         return <Badge color="success">Swap</Badge>;
     default:
         return <Badge color="primary">{props.type}</Badge>;

From 68161b7ef6a05cb02e9bca03f30a76aefe5a51d2 Mon Sep 17 00:00:00 2001
From: intl-man <theinternationalman079@gmail.com>
Date: Thu, 24 Jun 2021 08:52:03 +0800
Subject: [PATCH 42/74] Build a release for a feature branch.

---
 .github/workflows/release.yml | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)

diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index abd8edc79..f5cd20e8f 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -3,6 +3,7 @@ name: Release
 on:
   release:
     types: [published]
+    branches: 'feature/*'
 
 jobs:
   release:
@@ -12,16 +13,16 @@ jobs:
       - name: Check out the repo
         uses: actions/checkout@v2
 
-#      - name: Login to Docker Hub
-#        run: docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_TOKEN }}
+      - name: Login to Docker Hub
+        run: docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_TOKEN }}
 
       - name: Inject slug/short variables
         uses: rlespinasse/github-slug-action@v2.x
 
-#      - name: Build docker image
-#        run: |
-#          docker build -t sifchain/block-explorer:${{ env.GITHUB_REF_SLUG }} .
-#
-#      - name: Push docker images
-#        run: |
-#          docker push sifchain/block-explorer:${{ env.GITHUB_REF_SLUG }}
+      - name: Build docker image
+        run: |
+          docker build -t sifchain/block-explorer:${{ env.GITHUB_REF_SLUG }} .
+
+      - name: Push docker images
+        run: |
+          docker push sifchain/block-explorer:${{ env.GITHUB_REF_SLUG }}

From 7cbbda4d86e1b0a4aa2bfeca683cd03c14c159bc Mon Sep 17 00:00:00 2001
From: Andrew Joslin <andrewtjoslin@gmail.com>
Date: Wed, 23 Jun 2021 19:21:31 -0700
Subject: [PATCH 43/74] Update UI and remove ledger entries

---
 client/styles.scss                  | 2 +-
 imports/ui/components/Header.jsx    | 2 +-
 imports/ui/validators/Validator.jsx | 6 +++---
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/client/styles.scss b/client/styles.scss
index 5f30c4675..ac96a3479 100644
--- a/client/styles.scss
+++ b/client/styles.scss
@@ -1118,7 +1118,7 @@ body {
     opacity: 0.7;
   }
 
-table {
+table, #block-table, .transactions-list {
   background-color: white;
 }
 .status-switch {
diff --git a/imports/ui/components/Header.jsx b/imports/ui/components/Header.jsx
index 58e5c7be6..ba72f0788 100644
--- a/imports/ui/components/Header.jsx
+++ b/imports/ui/components/Header.jsx
@@ -25,7 +25,7 @@ import {
 import { Link } from 'react-router-dom';
 import SearchBar from './SearchBar.jsx';
 import i18n from 'meteor/universe:i18n';
-import LedgerModal from '../ledger/LedgerModal.jsx';
+// import LedgerModal from '../ledger/LedgerModal.jsx';
 import Account from './Account.jsx';
 
 const T = i18n.createComponent();
diff --git a/imports/ui/validators/Validator.jsx b/imports/ui/validators/Validator.jsx
index 628f21062..14297bf3c 100644
--- a/imports/ui/validators/Validator.jsx
+++ b/imports/ui/validators/Validator.jsx
@@ -11,7 +11,7 @@ import { Badge, Row, Col, Card,
 import KeybaseCheck from '../components/KeybaseCheck.jsx';
 import ValidatorDelegations from './Delegations.jsx';
 import ValidatorTransactions from '../components/TransactionsContainer.js';
-import { DelegationButtons } from '../ledger/LedgerActions.jsx';
+// import { DelegationButtons } from '../ledger/LedgerActions.jsx';
 import { Helmet } from 'react-helmet';
 import LinkIcon from '../components/LinkIcon.jsx';
 import i18n from 'meteor/universe:i18n';
@@ -241,9 +241,9 @@ export default class Validator extends Component{
                         <Card>
                             <div className="card-header"><T>common.votingPower</T></div>
                             <CardBody className="voting-power-card">
-                                {this.state.user?<DelegationButtons validator={this.props.validator}
+                                {/* {this.state.user?<DelegationButtons validator={this.props.validator}
                                     currentDelegation={this.state.currentUserDelegation}
-                                    history={this.props.history} stakingParams={this.props.chainStatus.staking?this.props.chainStatus.staking.params:null}/>:''}
+                                    history={this.props.history} stakingParams={this.props.chainStatus.staking?this.props.chainStatus.staking.params:null}/>:''} */}
                                 <Row>
                                     {this.props.validator.tokens?<Col xs={12}><h1 className="display-4 voting-power"><Badge color="primary" >{numbro(Math.floor(this.props.validator.tokens/Meteor.settings.public.powerReduction)).format('0,0')}</Badge></h1><span>(~{numbro(this.props.validator.tokens/Meteor.settings.public.powerReduction/this.props.chainStatus.activeVotingPower).format('0.00%')})</span></Col>:''}
                                     <Col sm={4} className="label"><T>validators.selfDelegationRatio</T></Col>

From 11a8db7e88c3c483756ab43871c59e1fd8f8cb5c Mon Sep 17 00:00:00 2001
From: Andrew Joslin <andrewtjoslin@gmail.com>
Date: Thu, 24 Jun 2021 07:12:20 -0700
Subject: [PATCH 44/74] Fix wrong chainId being used

---
 imports/api/blocks/server/methods.js     | 4 ++--
 imports/api/chain/server/methods.js      | 2 +-
 imports/api/validators/server/methods.js | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/imports/api/blocks/server/methods.js b/imports/api/blocks/server/methods.js
index 716350c0b..016068d18 100644
--- a/imports/api/blocks/server/methods.js
+++ b/imports/api/blocks/server/methods.js
@@ -431,7 +431,7 @@ Meteor.methods({
                     let endBlockInsertTime = new Date();
                     console.log("Block insert time: "+((endBlockInsertTime-startBlockInsertTime)/1000)+"seconds.");
 
-                    let chainStatus = Chain.findOne({chainId:block.block.header.chain_id});
+                    let chainStatus = Chain.findOne({chainId:Meteor.settings.public.chainId});
                     let lastSyncedTime = chainStatus?chainStatus.lastSyncedTime:0;
                     let timeDiff;
                     let blockTime = Meteor.settings.params.defaultBlockTime;
@@ -447,7 +447,7 @@ Meteor.methods({
                     let endGetValidatorsTime = new Date();
                     console.log("Get height validators time: "+((endGetValidatorsTime-startGetValidatorsTime)/1000)+"seconds.");
 
-                    Chain.update({chainId:block.block.header.chainId}, {$set:{lastSyncedTime:blockData.time, blockTime:blockTime}});
+                    Chain.update({chainId:Meteor.settings.public.chainId}, {$set:{lastSyncedTime:blockData.time, blockTime:blockTime}});
 
                     analyticsData.averageBlockTime = blockTime;
                     analyticsData.timeDiff = timeDiff;
diff --git a/imports/api/chain/server/methods.js b/imports/api/chain/server/methods.js
index 0910d72f0..cd16fbe15 100644
--- a/imports/api/chain/server/methods.js
+++ b/imports/api/chain/server/methods.js
@@ -48,7 +48,7 @@ Meteor.methods({
             let latestBlock = JSON.parse(response.content);
 
             let chain = {};
-            chain.chainId = latestBlock.block.header.chain_id;
+            chain.chainId = Meteor.settings.public.chainId
             chain.latestBlockHeight = parseInt(latestBlock.block.header.height);
             chain.latestBlockTime = latestBlock.block.header.time;
             let latestState = ChainStates.findOne({}, {sort: {height: -1}})
diff --git a/imports/api/validators/server/methods.js b/imports/api/validators/server/methods.js
index 27fe036e6..71fb86086 100644
--- a/imports/api/validators/server/methods.js
+++ b/imports/api/validators/server/methods.js
@@ -56,7 +56,7 @@ Meteor.methods({
         try {
             let response = HTTP.get(url);
             let status = JSON.parse(response?.content);
-            chainId = (status?.result?.node_info?.network);
+            chainId = Meteor.settings.public.chainId
         }
         catch (e) {
             console.log("Error getting chainId for keybase fetching")        

From a981ae1c49df141dad403e5a32d2337162682dbe Mon Sep 17 00:00:00 2001
From: Andrew Joslin <andrewtjoslin@gmail.com>
Date: Thu, 24 Jun 2021 07:14:58 -0700
Subject: [PATCH 45/74] Fix NPE on element getBoundingClientRect

---
 imports/ui/blocks/BlocksTable.jsx            | 2 +-
 imports/ui/transactions/TransactionsList.jsx | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/imports/ui/blocks/BlocksTable.jsx b/imports/ui/blocks/BlocksTable.jsx
index 1f6c9a04f..0a07dcb44 100644
--- a/imports/ui/blocks/BlocksTable.jsx
+++ b/imports/ui/blocks/BlocksTable.jsx
@@ -26,7 +26,7 @@ export default class BlocksTable extends Component {
     }
 
     isBottom(el) {
-        return el.getBoundingClientRect().bottom <= window.innerHeight;
+        return el?.getBoundingClientRect().bottom <= window.innerHeight;
     }
       
     componentDidMount() {
diff --git a/imports/ui/transactions/TransactionsList.jsx b/imports/ui/transactions/TransactionsList.jsx
index 4a9544796..16292a156 100644
--- a/imports/ui/transactions/TransactionsList.jsx
+++ b/imports/ui/transactions/TransactionsList.jsx
@@ -31,7 +31,7 @@ export default class Transactions extends Component{
     }
 
     isBottom(el) {
-        return el.getBoundingClientRect().bottom <= window.innerHeight;
+        return el?.getBoundingClientRect().bottom <= window.innerHeight;
     }
       
     componentDidMount() {

From 9421dc09478970d9c576315569360d3c3a7fce25 Mon Sep 17 00:00:00 2001
From: intl-man <theinternationalman079@gmail.com>
Date: Thu, 1 Jul 2021 14:11:55 +0800
Subject: [PATCH 46/74] Version bump.

---
 versions/version | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/versions/version b/versions/version
index ee1372d33..717903969 100644
--- a/versions/version
+++ b/versions/version
@@ -1 +1 @@
-0.2.2
+0.2.3

From 2fc026a3e2b999c4d696d571c77d0f095da43468 Mon Sep 17 00:00:00 2001
From: intl-man <theinternationalman079@gmail.com>
Date: Thu, 1 Jul 2021 14:40:13 +0800
Subject: [PATCH 47/74] Trigger build.


From 2777b4934050a7e4bba50f10197865258d059efa Mon Sep 17 00:00:00 2001
From: intl-man <theinternationalman079@gmail.com>
Date: Thu, 1 Jul 2021 14:42:58 +0800
Subject: [PATCH 48/74] Trigger build.


From 3e9b35480221f844db95d4f98132e6cedb33d72b Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Thu, 1 Jul 2021 22:53:57 -0600
Subject: [PATCH 49/74] added trigger for 042 branch

---
 .../042_devnet_on_merge_trigger_deploy.yml    | 42 +++++++++++++++++++
 1 file changed, 42 insertions(+)
 create mode 100644 .github/workflows/042_devnet_on_merge_trigger_deploy.yml

diff --git a/.github/workflows/042_devnet_on_merge_trigger_deploy.yml b/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
new file mode 100644
index 000000000..d1233dc54
--- /dev/null
+++ b/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
@@ -0,0 +1,42 @@
+name: 042 Trigger DevNet Block Explorer Build And Deploy Pipeline
+on:
+  push:
+    branches:
+      - 'feature/0.42'
+
+jobs:
+  DevNet:
+    name: Trigger Block Explorer Pipeline
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Set version
+        run: |
+          VER=$(cat versions/version)
+          echo $VER
+          echo "VERSION=$VER" >> $GITHUB_ENV
+
+      - name: 042 DevNet Trigger Block Explorer Pipeline
+        if: ${{ github.ref == 'refs/heads/develop' }}
+        uses: mvasigh/dispatch-action@main
+        with:
+          token: ${{ secrets.CHAINOPS_ACCESS_TOKEN }}
+          repo: chainOps
+          owner: Sifchain
+          event_type: build_bigdipper
+          message: |
+            {
+              "aws_region": "us-east-1",
+              "target_big_dipper_branch": "feature/0.42",
+              "app_region": "us",
+              "aws_cluster_name": "sifchain-aws-devnet-042-data",
+              "aws_role": "arn:aws:iam::346064283538:role/OrganizationAccountAccessRole",
+              "app_namespace": "block-explorer",
+              "image": "sifchain/block-explorer",
+              "image_tag": "devnet-${{ env.VERSION }}",
+              "version": "${{ env.VERSION }}",
+              "env": "data",
+              "app_name": "block-explorer",
+              "app_env": "data"
+            }
\ No newline at end of file

From f3919cf468b6947bf668bcdda954c656e165dc59 Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Thu, 1 Jul 2021 22:56:14 -0600
Subject: [PATCH 50/74] added trigger for 042 branch

---
 .github/workflows/042_devnet_on_merge_trigger_deploy.yml | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/.github/workflows/042_devnet_on_merge_trigger_deploy.yml b/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
index d1233dc54..0a6c7ab70 100644
--- a/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
+++ b/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
@@ -39,4 +39,5 @@ jobs:
               "env": "data",
               "app_name": "block-explorer",
               "app_env": "data"
-            }
\ No newline at end of file
+            }
+

From 1c98596a12a64258b32b2ca5a17979e9ea748cd2 Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Thu, 1 Jul 2021 23:08:24 -0600
Subject: [PATCH 51/74] change event type name

---
 .github/workflows/042_devnet_on_merge_trigger_deploy.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/042_devnet_on_merge_trigger_deploy.yml b/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
index 0a6c7ab70..3265972da 100644
--- a/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
+++ b/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
@@ -24,7 +24,7 @@ jobs:
           token: ${{ secrets.CHAINOPS_ACCESS_TOKEN }}
           repo: chainOps
           owner: Sifchain
-          event_type: build_bigdipper
+          event_type: build_bigdipper_042
           message: |
             {
               "aws_region": "us-east-1",

From a34d9f623252f55879ebd986bd6a1e64c4b08cf6 Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Thu, 1 Jul 2021 23:11:57 -0600
Subject: [PATCH 52/74] incriment version to trigger pipeline

---
 versions/version | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/versions/version b/versions/version
index ee1372d33..717903969 100644
--- a/versions/version
+++ b/versions/version
@@ -1 +1 @@
-0.2.2
+0.2.3

From b958950702120ca1da217b2e9cd3e4d5eedc835f Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Thu, 1 Jul 2021 23:17:51 -0600
Subject: [PATCH 53/74] changed to theright version

---
 versions/version | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/versions/version b/versions/version
index 717903969..fce05597f 100644
--- a/versions/version
+++ b/versions/version
@@ -1 +1 @@
-0.2.3
+0.3.0-rc.3
\ No newline at end of file

From 07f8941ee555b7122769687e1c8914347e1ff356 Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Thu, 1 Jul 2021 23:24:43 -0600
Subject: [PATCH 54/74] add pipeline to 042

---
 .../042_devnet_on_merge_trigger_deploy.yml    | 42 +++++++++++++++++++
 1 file changed, 42 insertions(+)
 create mode 100644 .github/workflows/042_devnet_on_merge_trigger_deploy.yml

diff --git a/.github/workflows/042_devnet_on_merge_trigger_deploy.yml b/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
new file mode 100644
index 000000000..df6d0ee09
--- /dev/null
+++ b/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
@@ -0,0 +1,42 @@
+name: 042 Trigger DevNet Block Explorer Build And Deploy Pipeline
+on:
+  push:
+    branches:
+      - 'feature/0.42'
+
+jobs:
+  DevNet:
+    name: Trigger Block Explorer Pipeline
+    runs-on: ubuntu-latest
+    steps:
+      - uses: actions/checkout@v2
+
+      - name: Set version
+        run: |
+          VER=$(cat versions/version)
+          echo $VER
+          echo "VERSION=$VER" >> $GITHUB_ENV
+
+      - name: 042 DevNet Trigger Block Explorer Pipeline
+        if: ${{ github.ref == 'refs/heads/develop' }}
+        uses: mvasigh/dispatch-action@main
+        with:
+          token: ${{ secrets.CHAINOPS_ACCESS_TOKEN }}
+          repo: chainOps
+          owner: Sifchain
+          event_type: build_bigdipper_042
+          message: |
+            {
+              "aws_region": "us-east-1",
+              "target_big_dipper_branch": "feature/0.42",
+              "app_region": "us",
+              "aws_cluster_name": "sifchain-aws-devnet-042-data",
+              "aws_role": "arn:aws:iam::346064283538:role/OrganizationAccountAccessRole",
+              "app_namespace": "block-explorer",
+              "image": "sifchain/block-explorer",
+              "image_tag": "devnet-${{ env.VERSION }}",
+              "version": "${{ env.VERSION }}",
+              "env": "data",
+              "app_name": "block-explorer",
+              "app_env": "data"
+            }

From b3a670daa8b14c96d670872b3defc8eda0995060 Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Thu, 1 Jul 2021 23:28:42 -0600
Subject: [PATCH 55/74] add pipeline to 042

---
 .github/workflows/042_devnet_on_merge_trigger_deploy.yml | 1 +
 1 file changed, 1 insertion(+)

diff --git a/.github/workflows/042_devnet_on_merge_trigger_deploy.yml b/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
index df6d0ee09..0a7615fc3 100644
--- a/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
+++ b/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
@@ -3,6 +3,7 @@ on:
   push:
     branches:
       - 'feature/0.42'
+      #test trigger
 
 jobs:
   DevNet:

From a4992bef06bd0949e545937ae88ca7a77734a1b0 Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Thu, 1 Jul 2021 23:37:15 -0600
Subject: [PATCH 56/74] added to 42

---
 .github/workflows/042_devnet_on_merge_trigger_deploy.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/042_devnet_on_merge_trigger_deploy.yml b/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
index 0a7615fc3..1066a2752 100644
--- a/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
+++ b/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
@@ -19,7 +19,7 @@ jobs:
           echo "VERSION=$VER" >> $GITHUB_ENV
 
       - name: 042 DevNet Trigger Block Explorer Pipeline
-        if: ${{ github.ref == 'refs/heads/develop' }}
+        if: ${{ github.ref == 'refs/heads/feature/0.42' }}
         uses: mvasigh/dispatch-action@main
         with:
           token: ${{ secrets.CHAINOPS_ACCESS_TOKEN }}

From b343be61944f6c8546ab7dce5f69394314481856 Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Thu, 1 Jul 2021 23:39:13 -0600
Subject: [PATCH 57/74] updated the 42 pipeline

---
 .github/workflows/042_devnet_on_merge_trigger_deploy.yml | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/.github/workflows/042_devnet_on_merge_trigger_deploy.yml b/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
index 3265972da..1066a2752 100644
--- a/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
+++ b/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
@@ -3,6 +3,7 @@ on:
   push:
     branches:
       - 'feature/0.42'
+      #test trigger
 
 jobs:
   DevNet:
@@ -18,7 +19,7 @@ jobs:
           echo "VERSION=$VER" >> $GITHUB_ENV
 
       - name: 042 DevNet Trigger Block Explorer Pipeline
-        if: ${{ github.ref == 'refs/heads/develop' }}
+        if: ${{ github.ref == 'refs/heads/feature/0.42' }}
         uses: mvasigh/dispatch-action@main
         with:
           token: ${{ secrets.CHAINOPS_ACCESS_TOKEN }}
@@ -40,4 +41,3 @@ jobs:
               "app_name": "block-explorer",
               "app_env": "data"
             }
-

From dd7d6f02d974e3a87e31e18566a6b12230a6461b Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Fri, 2 Jul 2021 00:00:32 -0600
Subject: [PATCH 58/74] new trigger

---
 .github/workflows/042_devnet_on_merge_trigger_deploy.yml | 1 -
 1 file changed, 1 deletion(-)

diff --git a/.github/workflows/042_devnet_on_merge_trigger_deploy.yml b/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
index 1066a2752..ef5239841 100644
--- a/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
+++ b/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
@@ -3,7 +3,6 @@ on:
   push:
     branches:
       - 'feature/0.42'
-      #test trigger
 
 jobs:
   DevNet:

From afa13bf25bb59ac123e2010e6c6725fd58223f82 Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Fri, 2 Jul 2021 00:37:26 -0600
Subject: [PATCH 59/74] updated trigger

---
 .github/workflows/042_devnet_on_merge_trigger_deploy.yml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/.github/workflows/042_devnet_on_merge_trigger_deploy.yml b/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
index ef5239841..22b211da8 100644
--- a/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
+++ b/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
@@ -3,7 +3,7 @@ on:
   push:
     branches:
       - 'feature/0.42'
-
+#triger
 jobs:
   DevNet:
     name: Trigger Block Explorer Pipeline

From 67c8113f9493f7193897cb66c23e750e66e4eda4 Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Mon, 12 Jul 2021 20:33:08 -0600
Subject: [PATCH 60/74] updated the readme to trigger deploymnet

---
 README.md | 1 +
 1 file changed, 1 insertion(+)

diff --git a/README.md b/README.md
index 79ff874ec..b3b576fb5 100644
--- a/README.md
+++ b/README.md
@@ -2,6 +2,7 @@
 
 Block Explorer for Cosmos
 
+
 ## Projects running on mainnets
 
 [Explore Akash with Big Dipper](https://akash.bigdipper.live/)

From cc4b4417b15010108f1c45ce1ccb087bff8bc471 Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Mon, 12 Jul 2021 20:36:04 -0600
Subject: [PATCH 61/74] updated the readme to trigger deploymnet

---
 versions/version | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/versions/version b/versions/version
index fce05597f..15dbc563e 100644
--- a/versions/version
+++ b/versions/version
@@ -1 +1 @@
-0.3.0-rc.3
\ No newline at end of file
+0.3.0-rc.4
\ No newline at end of file

From 387dd4ca624a3236369dd02356a2e54bf668afe8 Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Mon, 12 Jul 2021 21:08:44 -0600
Subject: [PATCH 62/74] increment version for deploy

---
 versions/version | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/versions/version b/versions/version
index 15dbc563e..6a9cccb2b 100644
--- a/versions/version
+++ b/versions/version
@@ -1 +1 @@
-0.3.0-rc.4
\ No newline at end of file
+0.3.0-rc.5
\ No newline at end of file

From a78e597230a9fcd1323fff2bf7143e2df909d3ed Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Mon, 12 Jul 2021 21:46:00 -0600
Subject: [PATCH 63/74] new trigger deployment

---
 versions/version | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/versions/version b/versions/version
index 6a9cccb2b..4a133ebfa 100644
--- a/versions/version
+++ b/versions/version
@@ -1 +1 @@
-0.3.0-rc.5
\ No newline at end of file
+0.3.0-rc.6
\ No newline at end of file

From 5a5b17fa03c5bc11a038b7d7a1f36b5bf2991760 Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Mon, 12 Jul 2021 23:19:19 -0600
Subject: [PATCH 64/74] updated some extra loggin on the validator method to
 see where its failing

---
 imports/api/validators/server/methods.js | 37 ++++++++++++++++++++++--
 versions/version                         |  2 +-
 2 files changed, 36 insertions(+), 3 deletions(-)

diff --git a/imports/api/validators/server/methods.js b/imports/api/validators/server/methods.js
index 71fb86086..84ea861e3 100644
--- a/imports/api/validators/server/methods.js
+++ b/imports/api/validators/server/methods.js
@@ -53,26 +53,58 @@ Meteor.methods({
         
         let url = RPC + '/status';
         let chainId;
+
+        console.log("url")
+
+        console.log(url)
+
         try {
             let response = HTTP.get(url);
             let status = JSON.parse(response?.content);
+
+            console.log("status")
+
+            console.log(status)
+
             chainId = Meteor.settings.public.chainId
+
+            console.log("chain id")
+
+            console.log(chainId)
         }
         catch (e) {
             console.log("Error getting chainId for keybase fetching")        
         }
-        let chainStatus = Chain.findOne({ chainId});
+        let chainStatus = Chain.findOne({chainId});
+
+        console.log("chain status . . ")
+
+        console.log(chainStatus)
+
         const bulkValidators = Validators.rawCollection().initializeUnorderedBulkOp();
 
+        console.log("Bulk validators")
+
+        console.log(bulkValidators)
+
         let lastKeybaseFetchTime = Date.parse(chainStatus?.lastKeybaseFetchTime) ?? 0
+
         console.log("Last fetch time: %o", lastKeybaseFetchTime)
 
         console.log('Fetching keybase...')
-        // eslint-disable-next-line no-loop-func
+
         Validators.find({}).forEach(async (validator) => {
+
+            console.log("Looping validators")
+
+            console.log(validator)
+
             try {
                 if (validator?.description && validator?.description?.identity) {
                     let profileUrl = getValidatorProfileUrl(validator?.description?.identity)
+
+                    console.log(profileUrl)
+
                     if (profileUrl) {
                         bulkValidators.find({ address: validator?.address }).upsert().updateOne({ $set: { 'profile_url': profileUrl } });
                         if (bulkValidators.length > 0) {
@@ -92,6 +124,7 @@ Meteor.methods({
             }
         })
         try{
+            console.log("Update chain")
             Chain.update({ chainId }, { $set: { lastKeybaseFetchTime: new Date().toUTCString() } });
         }
         catch(e){
diff --git a/versions/version b/versions/version
index 4a133ebfa..d37a8e6b4 100644
--- a/versions/version
+++ b/versions/version
@@ -1 +1 @@
-0.3.0-rc.6
\ No newline at end of file
+0.3.0-rc.7
\ No newline at end of file

From f90252ea93c42744fdc5443437c367e5e726e762 Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Mon, 12 Jul 2021 23:46:50 -0600
Subject: [PATCH 65/74] removed the extra logging

---
 imports/api/validators/server/methods.js | 32 +-----------------------
 versions/version                         |  2 +-
 2 files changed, 2 insertions(+), 32 deletions(-)

diff --git a/imports/api/validators/server/methods.js b/imports/api/validators/server/methods.js
index 84ea861e3..b299445ba 100644
--- a/imports/api/validators/server/methods.js
+++ b/imports/api/validators/server/methods.js
@@ -54,57 +54,27 @@ Meteor.methods({
         let url = RPC + '/status';
         let chainId;
 
-        console.log("url")
-
-        console.log(url)
-
         try {
             let response = HTTP.get(url);
             let status = JSON.parse(response?.content);
-
-            console.log("status")
-
-            console.log(status)
-
             chainId = Meteor.settings.public.chainId
-
-            console.log("chain id")
-
-            console.log(chainId)
         }
         catch (e) {
             console.log("Error getting chainId for keybase fetching")        
         }
-        let chainStatus = Chain.findOne({chainId});
-
-        console.log("chain status . . ")
-
-        console.log(chainStatus)
 
+        let chainStatus = Chain.findOne({chainId});
         const bulkValidators = Validators.rawCollection().initializeUnorderedBulkOp();
-
-        console.log("Bulk validators")
-
-        console.log(bulkValidators)
-
         let lastKeybaseFetchTime = Date.parse(chainStatus?.lastKeybaseFetchTime) ?? 0
 
         console.log("Last fetch time: %o", lastKeybaseFetchTime)
-
         console.log('Fetching keybase...')
 
         Validators.find({}).forEach(async (validator) => {
-
-            console.log("Looping validators")
-
-            console.log(validator)
-
             try {
                 if (validator?.description && validator?.description?.identity) {
                     let profileUrl = getValidatorProfileUrl(validator?.description?.identity)
 
-                    console.log(profileUrl)
-
                     if (profileUrl) {
                         bulkValidators.find({ address: validator?.address }).upsert().updateOne({ $set: { 'profile_url': profileUrl } });
                         if (bulkValidators.length > 0) {
diff --git a/versions/version b/versions/version
index d37a8e6b4..b73ee598e 100644
--- a/versions/version
+++ b/versions/version
@@ -1 +1 @@
-0.3.0-rc.7
\ No newline at end of file
+0.3.0-rc.8
\ No newline at end of file

From c580d8ea8bc693407caa7806327918d2dc644ab5 Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Mon, 12 Jul 2021 23:50:18 -0600
Subject: [PATCH 66/74] increment version

---
 versions/version | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/versions/version b/versions/version
index b73ee598e..fb0a31496 100644
--- a/versions/version
+++ b/versions/version
@@ -1 +1 @@
-0.3.0-rc.8
\ No newline at end of file
+0.3.0-rc.9
\ No newline at end of file

From 964cdc90c3dec3390a9de6f8ee1ff28678bfae9c Mon Sep 17 00:00:00 2001
From: Grant Zukel <gzukel@sifchain.finance>
Date: Mon, 12 Jul 2021 23:50:36 -0600
Subject: [PATCH 67/74] increment version

---
 versions/version | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/versions/version b/versions/version
index fb0a31496..b73ee598e 100644
--- a/versions/version
+++ b/versions/version
@@ -1 +1 @@
-0.3.0-rc.9
\ No newline at end of file
+0.3.0-rc.8
\ No newline at end of file

From 9bb5a3c8efbd0c381fc7dba009b878417c289465 Mon Sep 17 00:00:00 2001
From: Dae Choi <daechoi@outlook.com>
Date: Tue, 13 Jul 2021 09:34:54 -0400
Subject: [PATCH 68/74] Testing lowering threshold to 5

---
 imports/api/transactions/server/methods.js | 183 +++++++++++----------
 1 file changed, 97 insertions(+), 86 deletions(-)

diff --git a/imports/api/transactions/server/methods.js b/imports/api/transactions/server/methods.js
index 8bfb59a57..1021df723 100644
--- a/imports/api/transactions/server/methods.js
+++ b/imports/api/transactions/server/methods.js
@@ -1,112 +1,123 @@
-import { Meteor } from 'meteor/meteor';
-import { HTTP } from 'meteor/http';
-import { Transactions } from '../../transactions/transactions.js';
-import { Validators } from '../../validators/validators.js';
+import { Meteor } from 'meteor/meteor'
+import { HTTP } from 'meteor/http'
+import { Transactions } from '../../transactions/transactions.js'
+import { Validators } from '../../validators/validators.js'
 
-const AddressLength = 40;
+const AddressLength = 40
 
 Meteor.methods({
-    'Transactions.updateTransactions': async function(){
-        this.unblock();
-        if (TXSYNCING)
-            return "Syncing transactions...";
+    'Transactions.updateTransactions': async function () {
+        this.unblock()
+        if (TXSYNCING) return 'Syncing transactions...'
 
-        const transactions = Transactions.find({processed:false},{limit: 500}).fetch();
-        try{
-            TXSYNCING = true;
-            const bulkTransactions = Transactions.rawCollection().initializeUnorderedBulkOp();
-            for (let i in transactions){
-                let url = "";
+        const transactions = Transactions.find({ processed: false }, { limit: 5 }).fetch()
+        try {
+            TXSYNCING = true
+            const bulkTransactions = Transactions.rawCollection().initializeUnorderedBulkOp()
+            for (let i in transactions) {
+                let url = ''
                 try {
-                    url = API+ '/cosmos/tx/v1beta1/txs/'+transactions[i].txhash;
-                    let response = HTTP.get(url);
-                    let tx = JSON.parse(response.content);
+                    url = API + '/cosmos/tx/v1beta1/txs/' + transactions[i].txhash
+                    let response = HTTP.get(url)
+                    let tx = JSON.parse(response.content)
 
-                    tx.height = parseInt(tx.tx_response.height);
-                    tx.processed = true;
+                    tx.height = parseInt(tx.tx_response.height)
+                    tx.processed = true
 
-                    bulkTransactions.find({txhash:transactions[i].txhash}).updateOne({$set:tx});
-
-                }
-                catch(e) {
+                    bulkTransactions.find({ txhash: transactions[i].txhash }).updateOne({ $set: tx })
+                } catch (e) {
                     // console.log(url);
                     // console.log("tx not found: %o")
-                    console.log("Getting transaction %o: %o", transactions[i].txhash, e);
-                    bulkTransactions.find({txhash:transactions[i].txhash}).updateOne({$set:{processed:true, missing:true}});                    
+                    console.log('Getting transaction %o: %o', transactions[i].txhash, e)
+                    bulkTransactions
+                        .find({ txhash: transactions[i].txhash })
+                        .updateOne({ $set: { processed: true, missing: true } })
                 }
             }
-            if (bulkTransactions.length > 0){
-                console.log("aaa: %o",bulkTransactions.length)
+            if (bulkTransactions.length > 0) {
+                console.log('aaa: %o', bulkTransactions.length)
                 bulkTransactions.execute((err, result) => {
-                    if (err){
-                        console.log(err);
+                    if (err) {
+                        console.log(err)
                     }
-                    if (result){
-                        console.log(result);
+                    if (result) {
+                        console.log(result)
                     }
-                });
+                })
             }
-        }
-        catch (e) {
-            TXSYNCING = false;
+        } catch (e) {
+            TXSYNCING = false
             return e
         }
-        TXSYNCING = false;
+        TXSYNCING = false
         return transactions.length
     },
-    'Transactions.findDelegation': function(address, height){
-        this.unblock();
+    'Transactions.findDelegation': function (address, height) {
+        this.unblock()
         // following cosmos-sdk/x/slashing/spec/06_events.md and cosmos-sdk/x/staking/spec/06_events.md
-        return Transactions.find({
-            $or: [{$and: [
-                {"tx_response.logs.events.type": "delegate"},
-                {"tx_response.logs.events.attributes.key": "validator"},
-                {"tx_response.logs.events.attributes.value": address}
-            ]}, {$and:[
-                {"tx_response.logs.events.attributes.key": "action"},
-                {"tx_response.logs.events.attributes.value": "unjail"},
-                {"tx_response.logs.events.attributes.key": "sender"},
-                {"tx_response.logs.events.attributes.value": address}
-            ]}, {$and:[
-                {"tx_response.logs.events.type": "create_validator"},
-                {"tx_response.logs.events.attributes.key": "validator"},
-                {"tx_response.logs.events.attributes.value": address}
-            ]}, {$and:[
-                {"tx_response.logs.events.type": "unbond"},
-                {"tx_response.logs.events.attributes.key": "validator"},
-                {"tx_response.logs.events.attributes.value": address}
-            ]}, {$and:[
-                {"tx_response.logs.events.type": "redelegate"},
-                {"tx_response.logs.events.attributes.key": "destination_validator"},
-                {"tx_response.logs.events.attributes.value": address}
-            ]}],
-            "tx_response.code": 0,
-            height:{$lt:height}},
-        {sort:{height:-1},
-            limit: 1}
-        ).fetch();
+        return Transactions.find(
+            {
+                $or: [
+                    {
+                        $and: [
+                            { 'tx_response.logs.events.type': 'delegate' },
+                            { 'tx_response.logs.events.attributes.key': 'validator' },
+                            { 'tx_response.logs.events.attributes.value': address },
+                        ],
+                    },
+                    {
+                        $and: [
+                            { 'tx_response.logs.events.attributes.key': 'action' },
+                            { 'tx_response.logs.events.attributes.value': 'unjail' },
+                            { 'tx_response.logs.events.attributes.key': 'sender' },
+                            { 'tx_response.logs.events.attributes.value': address },
+                        ],
+                    },
+                    {
+                        $and: [
+                            { 'tx_response.logs.events.type': 'create_validator' },
+                            { 'tx_response.logs.events.attributes.key': 'validator' },
+                            { 'tx_response.logs.events.attributes.value': address },
+                        ],
+                    },
+                    {
+                        $and: [
+                            { 'tx_response.logs.events.type': 'unbond' },
+                            { 'tx_response.logs.events.attributes.key': 'validator' },
+                            { 'tx_response.logs.events.attributes.value': address },
+                        ],
+                    },
+                    {
+                        $and: [
+                            { 'tx_response.logs.events.type': 'redelegate' },
+                            { 'tx_response.logs.events.attributes.key': 'destination_validator' },
+                            { 'tx_response.logs.events.attributes.value': address },
+                        ],
+                    },
+                ],
+                'tx_response.code': 0,
+                height: { $lt: height },
+            },
+            { sort: { height: -1 }, limit: 1 }
+        ).fetch()
     },
-    'Transactions.findUser': function(address, fields=null){
-        this.unblock();
+    'Transactions.findUser': function (address, fields = null) {
+        this.unblock()
         // address is either delegator address or validator operator address
-        let validator;
-        if (!fields)
-            fields = {address:1, description:1, operator_address:1, delegator_address:1};
-        if (address.includes(Meteor.settings.public.bech32PrefixValAddr)){
+        let validator
+        if (!fields) fields = { address: 1, description: 1, operator_address: 1, delegator_address: 1 }
+        if (address.includes(Meteor.settings.public.bech32PrefixValAddr)) {
             // validator operator address
-            validator = Validators.findOne({operator_address:address}, {fields});
-        }
-        else if (address.includes(Meteor.settings.public.bech32PrefixAccAddr)){
+            validator = Validators.findOne({ operator_address: address }, { fields })
+        } else if (address.includes(Meteor.settings.public.bech32PrefixAccAddr)) {
             // delegator address
-            validator = Validators.findOne({delegator_address:address}, {fields});
+            validator = Validators.findOne({ delegator_address: address }, { fields })
+        } else if (address.length === AddressLength) {
+            validator = Validators.findOne({ address: address }, { fields })
         }
-        else if (address.length === AddressLength) {
-            validator = Validators.findOne({address:address}, {fields});
+        if (validator) {
+            return validator
         }
-        if (validator){
-            return validator;
-        }
-        return false;
-
-    }
-});
+        return false
+    },
+})

From 50671a159cad0c8ce5caa6546da1a43491a80a02 Mon Sep 17 00:00:00 2001
From: intl-man <theinternationalman079@gmail.com>
Date: Tue, 13 Jul 2021 21:38:12 +0800
Subject: [PATCH 69/74] Version bump.

---
 versions/version | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/versions/version b/versions/version
index b73ee598e..fb0a31496 100644
--- a/versions/version
+++ b/versions/version
@@ -1 +1 @@
-0.3.0-rc.8
\ No newline at end of file
+0.3.0-rc.9
\ No newline at end of file

From 91f7b921561da8fa14f8eeead8c7be9c362a1eb6 Mon Sep 17 00:00:00 2001
From: intl-man <theinternationalman079@gmail.com>
Date: Tue, 13 Jul 2021 21:47:10 +0800
Subject: [PATCH 70/74] Version bump.

---
 versions/version | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/versions/version b/versions/version
index fb0a31496..3f686926e 100644
--- a/versions/version
+++ b/versions/version
@@ -1 +1 @@
-0.3.0-rc.9
\ No newline at end of file
+0.3.0-rc.10
\ No newline at end of file

From 921d2f8da580d347d80a65cf9ad8b8c990ccc8e9 Mon Sep 17 00:00:00 2001
From: intl-man <theinternationalman079@gmail.com>
Date: Wed, 14 Jul 2021 14:28:38 +0800
Subject: [PATCH 71/74] Version bump.

---
 versions/version | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/versions/version b/versions/version
index 3f686926e..9006ec971 100644
--- a/versions/version
+++ b/versions/version
@@ -1 +1 @@
-0.3.0-rc.10
\ No newline at end of file
+0.3.0-rc.11
\ No newline at end of file

From 87136a7d87bb82ee4edb45fbde089fd938d2e0bf Mon Sep 17 00:00:00 2001
From: 59023g <5235538+59023g@users.noreply.github.com>
Date: Wed, 21 Jul 2021 17:11:36 -0500
Subject: [PATCH 72/74] ui/Activities: fix MsgSubmitProposal

---
 imports/ui/components/Activities.jsx | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/imports/ui/components/Activities.jsx b/imports/ui/components/Activities.jsx
index 9aee989c3..8f5f90024 100644
--- a/imports/ui/components/Activities.jsx
+++ b/imports/ui/components/Activities.jsx
@@ -91,7 +91,7 @@ export default class Activites extends Component {
         case "/cosmos.gov.v1beta1.MsgSubmitProposal":
             const proposalId = _.get(this.props, 'events[2].attributes[0].value', null)
             const proposalLink = proposalId ? `/proposals/${proposalId}` : "#";
-            return <p><Account address={msg.proposer} /> <MsgType type={msg["@type"]} /> <T>activities.withTitle</T> <Link to={proposalLink}>{msg.content.value.title}</Link><T>common.fullStop</T></p>
+            return <p><Account address={msg.proposer} /> <MsgType type={msg["@type"]} /> <T>activities.withTitle</T> <Link to={proposalLink}>{msg.content.title}</Link><T>common.fullStop</T></p>
         case "/cosmos.gov.v1beta1.MsgDeposit":
             return <p><Account address={msg.depositor} /> {(this.props.invalid)?<T>activities.failedTo</T>:''}<MsgType type={msg["@type"]} /> <em className="text-info">{msg.amount.map((amount,i) =>new Coin(amount.amount, amount.denom).toString(6)).join(', ')}</em> <T>activities.to</T> <Link to={"/proposals/"+msg.proposal_id}><T>proposals.proposal</T> {msg.proposal_id}</Link><T>common.fullStop</T></p>
         case "/cosmos.gov.v1beta1.MsgVote":

From b132f94ca0b1e75a53cbaf8dd9cfa3e0720d038b Mon Sep 17 00:00:00 2001
From: 59023g <5235538+59023g@users.noreply.github.com>
Date: Thu, 22 Jul 2021 11:04:51 -0500
Subject: [PATCH 73/74] version bump

---
 versions/version | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/versions/version b/versions/version
index 9006ec971..fab506938 100644
--- a/versions/version
+++ b/versions/version
@@ -1 +1 @@
-0.3.0-rc.11
\ No newline at end of file
+0.3.0-rc.12
\ No newline at end of file

From 6a3a267c2a2ae89ba73b1ee1a9cc4f524ef6e10f Mon Sep 17 00:00:00 2001
From: intl-man <theinternationalman079@gmail.com>
Date: Tue, 27 Jul 2021 17:28:27 +0800
Subject: [PATCH 74/74] Disabled workflows, temporarily.

---
 .../042_devnet_on_merge_trigger_deploy.yml    |  86 +++++------
 .../devnet_on_merge_trigger_deploy.yml        | 140 +++++++++---------
 .github/workflows/release.yml                 |  52 +++----
 3 files changed, 139 insertions(+), 139 deletions(-)

diff --git a/.github/workflows/042_devnet_on_merge_trigger_deploy.yml b/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
index 1066a2752..87834f12b 100644
--- a/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
+++ b/.github/workflows/042_devnet_on_merge_trigger_deploy.yml
@@ -1,43 +1,43 @@
-name: 042 Trigger DevNet Block Explorer Build And Deploy Pipeline
-on:
-  push:
-    branches:
-      - 'feature/0.42'
-      #test trigger
-
-jobs:
-  DevNet:
-    name: Trigger Block Explorer Pipeline
-    runs-on: ubuntu-latest
-    steps:
-      - uses: actions/checkout@v2
-
-      - name: Set version
-        run: |
-          VER=$(cat versions/version)
-          echo $VER
-          echo "VERSION=$VER" >> $GITHUB_ENV
-
-      - name: 042 DevNet Trigger Block Explorer Pipeline
-        if: ${{ github.ref == 'refs/heads/feature/0.42' }}
-        uses: mvasigh/dispatch-action@main
-        with:
-          token: ${{ secrets.CHAINOPS_ACCESS_TOKEN }}
-          repo: chainOps
-          owner: Sifchain
-          event_type: build_bigdipper_042
-          message: |
-            {
-              "aws_region": "us-east-1",
-              "target_big_dipper_branch": "feature/0.42",
-              "app_region": "us",
-              "aws_cluster_name": "sifchain-aws-devnet-042-data",
-              "aws_role": "arn:aws:iam::346064283538:role/OrganizationAccountAccessRole",
-              "app_namespace": "block-explorer",
-              "image": "sifchain/block-explorer",
-              "image_tag": "devnet-${{ env.VERSION }}",
-              "version": "${{ env.VERSION }}",
-              "env": "data",
-              "app_name": "block-explorer",
-              "app_env": "data"
-            }
+#name: 042 Trigger DevNet Block Explorer Build And Deploy Pipeline
+#on:
+#  push:
+#    branches:
+#      - 'feature/0.42'
+#      #test trigger
+#
+#jobs:
+#  DevNet:
+#    name: Trigger Block Explorer Pipeline
+#    runs-on: ubuntu-latest
+#    steps:
+#      - uses: actions/checkout@v2
+#
+#      - name: Set version
+#        run: |
+#          VER=$(cat versions/version)
+#          echo $VER
+#          echo "VERSION=$VER" >> $GITHUB_ENV
+#
+#      - name: 042 DevNet Trigger Block Explorer Pipeline
+#        if: ${{ github.ref == 'refs/heads/feature/0.42' }}
+#        uses: mvasigh/dispatch-action@main
+#        with:
+#          token: ${{ secrets.CHAINOPS_ACCESS_TOKEN }}
+#          repo: chainOps
+#          owner: Sifchain
+#          event_type: build_bigdipper_042
+#          message: |
+#            {
+#              "aws_region": "us-east-1",
+#              "target_big_dipper_branch": "feature/0.42",
+#              "app_region": "us",
+#              "aws_cluster_name": "sifchain-aws-devnet-042-data",
+#              "aws_role": "arn:aws:iam::346064283538:role/OrganizationAccountAccessRole",
+#              "app_namespace": "block-explorer",
+#              "image": "sifchain/block-explorer",
+#              "image_tag": "devnet-${{ env.VERSION }}",
+#              "version": "${{ env.VERSION }}",
+#              "env": "data",
+#              "app_name": "block-explorer",
+#              "app_env": "data"
+#            }
diff --git a/.github/workflows/devnet_on_merge_trigger_deploy.yml b/.github/workflows/devnet_on_merge_trigger_deploy.yml
index f79dce58a..7084da67f 100644
--- a/.github/workflows/devnet_on_merge_trigger_deploy.yml
+++ b/.github/workflows/devnet_on_merge_trigger_deploy.yml
@@ -1,70 +1,70 @@
-name: Trigger DevNet Block Explorer Build And Deploy Pipeline
-on:
-  push:
-    branches:
-      - 'develop'
-      - 'testnet'
-      - 'master'
-
-jobs:
-  DevNet:
-    name: Trigger Block Explorer Pipeline
-    runs-on: ubuntu-latest
-    steps:
-      - uses: actions/checkout@v2
-
-      - name: Set version
-        run: |
-          VER=$(cat versions/version)
-          echo $VER
-          echo "VERSION=$VER" >> $GITHUB_ENV
-
-      - name: DevNet Trigger Block Explorer Pipeline
-        if: ${{ github.ref == 'refs/heads/develop' }}
-        uses: mvasigh/dispatch-action@main
-        with:
-          # You should create a personal access token and store it in your repository
-          token: ${{ secrets.CHAINOPS_ACCESS_TOKEN }}
-          repo: chainOps
-          owner: Sifchain
-          event_type: build_bigdipper
-          message: |
-            {
-              "aws_region": "us-east-2",
-              "target_big_dipper_branch": "develop",
-              "app_region": "us",
-              "aws_cluster_name": "sifchain-aws-devnet-data",
-              "aws_role": "arn:aws:iam::346064283538:role/OrganizationAccountAccessRole",
-              "app_namespace": "block-explorer",
-              "image": "sifchain/block-explorer",
-              "image_tag": "devnet-${{ env.VERSION }}",
-              "version": "${{ env.VERSION }}",
-              "env": "data",
-              "app_name": "block-explorer",
-              "app_env": "data"
-            }
-
-      - name: TestNet Trigger Block Explorer Pipeline
-        if: ${{ github.ref == 'refs/heads/testnet' }}
-        uses: mvasigh/dispatch-action@main
-        with:
-          # You should create a personal access token and store it in your repository
-          token: ${{ secrets.CHAINOPS_ACCESS_TOKEN }}
-          repo: chainOps
-          owner: Sifchain
-          event_type: build_bigdipper
-          message: |
-            {
-              "aws_region": "us-east-2",
-              "target_big_dipper_branch": "testnet",
-              "app_region": "us",
-              "aws_cluster_name": "sifchain-aws-testnet-data",
-              "aws_role": "arn:aws:iam::346064283538:role/OrganizationAccountAccessRole",
-              "app_namespace": "block-explorer",
-              "image": "sifchain/block-explorer",
-              "image_tag": "testnet-${{ env.VERSION }}",
-              "version": "${{ env.VERSION }}",
-              "env": "data",
-              "app_name": "block-explorer",
-              "app_env": "data"
-            }
\ No newline at end of file
+#name: Trigger DevNet Block Explorer Build And Deploy Pipeline
+#on:
+#  push:
+#    branches:
+#      - 'develop'
+#      - 'testnet'
+#      - 'master'
+#
+#jobs:
+#  DevNet:
+#    name: Trigger Block Explorer Pipeline
+#    runs-on: ubuntu-latest
+#    steps:
+#      - uses: actions/checkout@v2
+#
+#      - name: Set version
+#        run: |
+#          VER=$(cat versions/version)
+#          echo $VER
+#          echo "VERSION=$VER" >> $GITHUB_ENV
+#
+#      - name: DevNet Trigger Block Explorer Pipeline
+#        if: ${{ github.ref == 'refs/heads/develop' }}
+#        uses: mvasigh/dispatch-action@main
+#        with:
+#          # You should create a personal access token and store it in your repository
+#          token: ${{ secrets.CHAINOPS_ACCESS_TOKEN }}
+#          repo: chainOps
+#          owner: Sifchain
+#          event_type: build_bigdipper
+#          message: |
+#            {
+#              "aws_region": "us-east-2",
+#              "target_big_dipper_branch": "develop",
+#              "app_region": "us",
+#              "aws_cluster_name": "sifchain-aws-devnet-data",
+#              "aws_role": "arn:aws:iam::346064283538:role/OrganizationAccountAccessRole",
+#              "app_namespace": "block-explorer",
+#              "image": "sifchain/block-explorer",
+#              "image_tag": "devnet-${{ env.VERSION }}",
+#              "version": "${{ env.VERSION }}",
+#              "env": "data",
+#              "app_name": "block-explorer",
+#              "app_env": "data"
+#            }
+#
+#      - name: TestNet Trigger Block Explorer Pipeline
+#        if: ${{ github.ref == 'refs/heads/testnet' }}
+#        uses: mvasigh/dispatch-action@main
+#        with:
+#          # You should create a personal access token and store it in your repository
+#          token: ${{ secrets.CHAINOPS_ACCESS_TOKEN }}
+#          repo: chainOps
+#          owner: Sifchain
+#          event_type: build_bigdipper
+#          message: |
+#            {
+#              "aws_region": "us-east-2",
+#              "target_big_dipper_branch": "testnet",
+#              "app_region": "us",
+#              "aws_cluster_name": "sifchain-aws-testnet-data",
+#              "aws_role": "arn:aws:iam::346064283538:role/OrganizationAccountAccessRole",
+#              "app_namespace": "block-explorer",
+#              "image": "sifchain/block-explorer",
+#              "image_tag": "testnet-${{ env.VERSION }}",
+#              "version": "${{ env.VERSION }}",
+#              "env": "data",
+#              "app_name": "block-explorer",
+#              "app_env": "data"
+#            }
\ No newline at end of file
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index abd8edc79..14f1ff235 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -1,27 +1,27 @@
-name: Release
-
-on:
-  release:
-    types: [published]
-
-jobs:
-  release:
-    name: Release
-    runs-on: ubuntu-latest
-    steps:
-      - name: Check out the repo
-        uses: actions/checkout@v2
-
-#      - name: Login to Docker Hub
-#        run: docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_TOKEN }}
-
-      - name: Inject slug/short variables
-        uses: rlespinasse/github-slug-action@v2.x
-
-#      - name: Build docker image
-#        run: |
-#          docker build -t sifchain/block-explorer:${{ env.GITHUB_REF_SLUG }} .
+#name: Release
 #
-#      - name: Push docker images
-#        run: |
-#          docker push sifchain/block-explorer:${{ env.GITHUB_REF_SLUG }}
+#on:
+#  release:
+#    types: [published]
+#
+#jobs:
+#  release:
+#    name: Release
+#    runs-on: ubuntu-latest
+#    steps:
+#      - name: Check out the repo
+#        uses: actions/checkout@v2
+#
+##      - name: Login to Docker Hub
+##        run: docker login -u ${{ secrets.DOCKERHUB_USERNAME }} -p ${{ secrets.DOCKERHUB_TOKEN }}
+#
+#      - name: Inject slug/short variables
+#        uses: rlespinasse/github-slug-action@v2.x
+#
+##      - name: Build docker image
+##        run: |
+##          docker build -t sifchain/block-explorer:${{ env.GITHUB_REF_SLUG }} .
+##
+##      - name: Push docker images
+##        run: |
+##          docker push sifchain/block-explorer:${{ env.GITHUB_REF_SLUG }}