diff --git a/README.md b/README.md index ca6fbfdbc..db441a543 100644 --- a/README.md +++ b/README.md @@ -54,14 +54,22 @@ npm install @terra-money/terra.js Terra.js can be used in Node.js, as well as inside the browser. Please check the [docs](https://docs.terra.money/docs/develop/sdks/terra-js/README.html) for notes on how to get up and running. ### Getting blockchain data - +:exclamation: terra.js can connect both terra-classic and terra network. If you want to communicate with classic chain, you have to set isClassic as `true`. ```ts import { LCDClient, Coin } from '@terra-money/terra.js'; -// connect to bombay testnet -const terra = new LCDClient({ - URL: 'https://bombay-lcd.terra.dev', - chainID: 'bombay-12', +// connect to pisco testnet +const client = new LCDClient({ + URL: 'https://pisco-lcd.terra.dev', + chainID: 'pisco-1', + isClassic: false // if it is unset, LCDClient assumes the flag is false. +}); + +// connect to columbus-5 terra classic network +const client = new LCDClient({ + URL: 'https://columbus-lcd.terra.dev', + chainID: 'columbus-5', + isClassic: true // *set to true to connect terra-classic chain* }); // To use LocalTerra @@ -70,11 +78,9 @@ const terra = new LCDClient({ // chainID: 'localterra' // }); -// get the current swap rate from 1 TerraUSD to TerraKRW -const offerCoin = new Coin('uusd', '1000000'); -terra.market.swapRate(offerCoin, 'ukrw').then(c => { - console.log(`${offerCoin.toString()} can be swapped for ${c.toString()}`); -}); +// get the current balance of `terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v` +const balance = terra.bank.balance('terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v'); +console.log(balance); ``` ### Broadcasting transactions @@ -92,8 +98,8 @@ const mk = new MnemonicKey({ // connect to bombay testnet const terra = new LCDClient({ - URL: 'https://bombay-lcd.terra.dev', - chainID: 'bombay-12', + URL: 'https://pisco-lcd.terra.dev', + chainID: 'pisco-1', }); // To use LocalTerra @@ -110,7 +116,7 @@ const wallet = terra.wallet(mk); const send = new MsgSend( 'terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v', 'terra17lmam6zguazs5q5u6z5mmx76uj63gldnse2pdp', - { uluna: 1000000, ukrw: 1230201, uusd: 1312029 } + { uluna: 1200000} ); wallet diff --git a/integration-tests/contract.ts b/integration-tests/contract.ts index 888728843..c5a62354b 100644 --- a/integration-tests/contract.ts +++ b/integration-tests/contract.ts @@ -7,21 +7,25 @@ import { getCodeId, getContractAddress, } from '../src'; +import { AccessConfig, AccessType } from '../src/core/wasm/AccessConfig'; import * as fs from 'fs'; +const isLegacy = false; +const terra = new LocalTerra(isLegacy); + // test1 key from localterra accounts -const terra = new LocalTerra(); const { test1 } = terra.wallets; async function main(): Promise { const storeCode = new MsgStoreCode( test1.key.accAddress, - fs.readFileSync('contract.wasm').toString('base64') + fs.readFileSync(isLegacy ? 'contract.wasm.7' : 'contract.wasm.8').toString('base64'), + isLegacy ? undefined : new AccessConfig(AccessType.ACCESS_TYPE_EVERYBODY, "") ); const storeCodeTx = await test1.createAndSignTx({ msgs: [storeCode], }); - const storeCodeTxResult = await terra.tx.broadcast(storeCodeTx); + const storeCodeTxResult = await terra.tx.broadcastBlock(storeCodeTx); console.log(storeCodeTxResult); @@ -38,13 +42,14 @@ async function main(): Promise { undefined, +codeId, // code ID { count: 0, }, // InitMsg - { uluna: 10000000, ukrw: 1000000 } // init coins + { uluna: 1000000 }, // init coins + "testlabel", ); const instantiateTx = await test1.createAndSignTx({ msgs: [instantiate], }); - const instantiateTxResult = await terra.tx.broadcast(instantiateTx); + const instantiateTxResult = await terra.tx.broadcastBlock(instantiateTx); console.log(instantiateTxResult); @@ -54,7 +59,7 @@ async function main(): Promise { ); } - const contractAddress = getContractAddress(instantiateTxResult); + const contractAddress = getContractAddress(instantiateTxResult, 0, isLegacy); const execute = new MsgExecuteContract( test1.key.accAddress, // sender @@ -65,8 +70,16 @@ async function main(): Promise { const executeTx = await test1.createAndSignTx({ msgs: [execute], }); - const executeTxResult = await terra.tx.broadcast(executeTx); + const executeTxResult = await terra.tx.broadcastBlock(executeTx); console.log(executeTxResult); + + console.log(await terra.wasm.contractQuery(contractAddress, { "get_count": {} })); + + const [history, _] = await terra.wasm.contractHistory(contractAddress); + console.log(history.map(h => h.toData())); + console.log(JSON.stringify(await terra.wasm.contractInfo(contractAddress))); + console.log(JSON.stringify(await terra.wasm.codeInfo(+codeId))); + } -main().then(console.log); +main().then(console.log).catch(console.log) diff --git a/integration-tests/contract.wasm.7 b/integration-tests/contract.wasm.7 new file mode 100644 index 000000000..4ec50a5a8 Binary files /dev/null and b/integration-tests/contract.wasm.7 differ diff --git a/integration-tests/contract.wasm.8 b/integration-tests/contract.wasm.8 new file mode 100644 index 000000000..a9c4a7b24 Binary files /dev/null and b/integration-tests/contract.wasm.8 differ diff --git a/integration-tests/send.ts b/integration-tests/send.ts index d9a0491e4..09b422193 100644 --- a/integration-tests/send.ts +++ b/integration-tests/send.ts @@ -9,8 +9,8 @@ async function main() { }); const bombay = new LCDClient({ - chainID: 'bombay-12', - URL: 'https://bombay-lcd.terra.dev', + chainID: 'localterra', + URL: 'http://localhost:1317', }); // a wallet can be created out of any key @@ -21,7 +21,7 @@ async function main() { const send = new MsgSend( 'terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v', 'terra17lmam6zguazs5q5u6z5mmx76uj63gldnse2pdp', - { uluna: 1312029 } + { uluna: 1000 } ); wallet @@ -31,6 +31,13 @@ async function main() { memo: 'test from terra.js!', }) .then(tx => { + /* + tx.body.messages[0] = new MsgSend( + 'terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v', + 'terra17lmam6zguazs5q5u6z5mmx76uj63gldnse2pdp', + { uluna: 2000 } + ); + */ return bombay.tx.broadcast(tx); }) .then(result => { diff --git a/integration-tests/sendMultisend.ts b/integration-tests/sendMultisend.ts index 57099b9a5..40c61f09a 100644 --- a/integration-tests/sendMultisend.ts +++ b/integration-tests/sendMultisend.ts @@ -9,31 +9,32 @@ async function main() { const mk2 = new MnemonicKey({ mnemonic: - 'arrest word woman erupt kiss tank neck achieve diagram gadget siren rare valve replace outside angry dance possible purchase extra yellow cruise pride august', + 'quality vacuum heart guard buzz spike sight swarm shove special gym robust assume sudden deposit grid alcohol choice devote leader tilt noodle tide penalty' }); const bombay = new LCDClient({ - chainID: 'bombay-12', - URL: 'https://bombay-lcd.terra.dev', - gasPrices: { uusd: 0.38 }, + chainID: 'localterra', + URL: 'http://localhost:1317', + gasPrices: { uluna: 0.38 }, + isClassic: true }); // create a simple message that moves coin balances const send = new MsgMultiSend( [ new MsgMultiSend.Input('terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v', { - uusd: 100000, + uluna: 100000, }), - new MsgMultiSend.Input('terra1fqwsd6as9v7f93vja2u7yjs98enawcaq6ge2dx', { - uusd: 200000, + new MsgMultiSend.Input('terra17lmam6zguazs5q5u6z5mmx76uj63gldnse2pdp', { + uluna: 200000, }), ], [ - new MsgMultiSend.Output('terra17lmam6zguazs5q5u6z5mmx76uj63gldnse2pdp', { - uusd: 150000, + new MsgMultiSend.Output('terra1757tkx08n0cqrw7p86ny9lnxsqeth0wgp0em95', { + uluna: 150000, }), new MsgMultiSend.Output('terra1gufrav46pnpwf03yu7xz76ylkmatsxtplrxnmc', { - uusd: 150000, + uluna: 150000, }), ] ); @@ -49,7 +50,7 @@ async function main() { { msgs: [send], memo: 'memo', - gasPrices: { uusd: 0.456 }, + gasPrices: { uluna: 0.456 }, gasAdjustment: 1.4, } ); @@ -61,8 +62,10 @@ async function main() { accInfo.getSequenceNumber(), tx.auth_info, tx.body - ) + ), + bombay.config.isClassic ); + console.log(`accinfo1:${accInfo}`); const sig2 = await mk2.createSignatureAmino( new SignDoc( @@ -71,7 +74,8 @@ async function main() { accInfo2.getSequenceNumber(), tx.auth_info, tx.body - ) + ), + bombay.config.isClassic ); tx.appendSignatures([sig1, sig2]); diff --git a/integration-tests/sendMultisig.ts b/integration-tests/sendMultisig.ts index 6541eccea..c05d0d7f5 100644 --- a/integration-tests/sendMultisig.ts +++ b/integration-tests/sendMultisig.ts @@ -25,6 +25,9 @@ async function main() { mnemonic: 'shrug resist find inch narrow tumble knee fringe wide mandate angry sense grab rack fork snack family until bread lake bridge heavy goat want', }); + console.log(mk1.accAddress) + console.log(mk2.accAddress) + console.log(mk3.accAddress) const multisigPubkey = new LegacyAminoMultisigPublicKey(2, [ mk1.publicKey as SimplePublicKey, @@ -33,8 +36,8 @@ async function main() { ]); const bombay = new LCDClient({ - chainID: 'bombay-12', - URL: 'https://bombay-lcd.terra.dev', + chainID: 'localterra', + URL: 'http://localhost:1317', gasPrices: { uusd: 0.38 }, }); @@ -94,7 +97,7 @@ async function main() { ), ]); console.log(JSON.stringify(tx.toData())); - bombay.tx.broadcast(tx).then(console.log); + bombay.tx.broadcastBlock(tx).then(console.log); } main().catch(console.error); diff --git a/integration-tests/txSearch.ts b/integration-tests/txSearch.ts index 7e1f821e7..3556c019a 100644 --- a/integration-tests/txSearch.ts +++ b/integration-tests/txSearch.ts @@ -1,17 +1,18 @@ import { LCDClient } from '../src'; async function main() { - const bombay = new LCDClient({ - chainID: 'bombay-12', - URL: 'https://bombay-lcd.terra.dev', + const terra = new LCDClient({ + chainID: 'localterra', + URL: 'http://localhost:1317', gasPrices: { uusd: 0.38 }, }); console.log( `Txs Page 1: ${JSON.stringify( ( - await bombay.tx.search({ - events: [{ key: 'tx.height', value: '5947667' }], + await terra.tx.search({ + events: [{ key: 'tx.height', value: '8343' }, + {key:'message.sender', value:'terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38p'}], 'pagination.limit': '100', }) ).txs.map(tx => tx.txhash) @@ -21,8 +22,8 @@ async function main() { console.log( `Txs Page 2: ${JSON.stringify( ( - await bombay.tx.search({ - events: [{ key: 'tx.height', value: '5947667' }], + await terra.tx.search({ + events: [{ key: 'tx.height', value: '8345' }], 'pagination.limit': '50', 'pagination.offset': '1', }) diff --git a/package-lock.json b/package-lock.json index f48475bfb..e89e838a7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,16 @@ { "name": "@terra-money/terra.js", - "version": "3.0.12", + "version": "3.1.0", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "@terra-money/terra.js", - "version": "3.0.12", + "version": "3.1.0", "license": "MIT", "dependencies": { - "@terra-money/terra.proto": "^0.1.7", + "@terra-money/legacy.proto": "npm:@terra-money/terra.proto@^0.1.7", + "@terra-money/terra.proto": "^0.2.0-beta.4", "axios": "^0.26.1", "bech32": "^2.0.0", "bip32": "^2.0.6", @@ -89,21 +90,21 @@ } }, "node_modules/@babel/core": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz", - "integrity": "sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.0.tgz", + "integrity": "sha512-Xyw74OlJwDijToNi0+6BBI5mLLR5+5R3bcSH80LXzjzEGEUlvNzujEE71BaD/ApEZHAvFI/Mlmp4M5lIkdeeWw==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.10", + "@babel/generator": "^7.18.0", "@babel/helper-compilation-targets": "^7.17.10", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.10", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helpers": "^7.18.0", + "@babel/parser": "^7.18.0", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.10", - "@babel/types": "^7.17.10", + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -128,19 +129,33 @@ } }, "node_modules/@babel/generator": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz", - "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.0.tgz", + "integrity": "sha512-81YO9gGx6voPXlvYdZBliFXAZU8vZ9AZ6z+CjlmcnaeOcYSFbMTpdeDUO9xD9dh/68Vq03I8ZspfUTPfitcDHg==", "dev": true, "dependencies": { - "@babel/types": "^7.17.10", - "@jridgewell/gen-mapping": "^0.1.0", + "@babel/types": "^7.18.0", + "@jridgewell/gen-mapping": "^0.3.0", "jsesc": "^2.5.1" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/@babel/helper-compilation-targets": { "version": "7.17.10", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.10.tgz", @@ -218,9 +233,9 @@ } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", + "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", "dev": true, "dependencies": { "@babel/helper-environment-visitor": "^7.16.7", @@ -229,17 +244,17 @@ "@babel/helper-split-export-declaration": "^7.16.7", "@babel/helper-validator-identifier": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", + "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", "dev": true, "engines": { "node": ">=6.9.0" @@ -288,23 +303,23 @@ } }, "node_modules/@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.0.tgz", + "integrity": "sha512-AE+HMYhmlMIbho9nbvicHyxFwhrO+xhKB6AhRxzl8w46Yj0VXTZjEsAoBVC7rB2I0jzX+yWyVybnO08qkfx6kg==", "dev": true, "dependencies": { "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", + "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.16.7", @@ -387,9 +402,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.10.tgz", - "integrity": "sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-AqDccGC+m5O/iUStSJy3DGRIUFu7WbY/CppZYwrEUB4N0tZlnI8CSTsgL7v5fHVFmUbRv2sd+yy27o8Ydt4MGg==", "dev": true, "bin": { "parser": "bin/babel-parser.js" @@ -546,12 +561,12 @@ } }, "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.10.tgz", - "integrity": "sha512-xJefea1DWXW09pW4Tm9bjwVlPDyYA2it3fWlmEjpYz6alPvTUjL0EOzNzI/FEOyI3r4/J7uVH5UqKgl1TQ5hqQ==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz", + "integrity": "sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" }, "engines": { "node": ">=6.9.0" @@ -575,19 +590,19 @@ } }, "node_modules/@babel/traverse": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.10.tgz", - "integrity": "sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.0.tgz", + "integrity": "sha512-oNOO4vaoIQoGjDQ84LgtF/IAlxlyqL4TUuoQ7xLkQETFaHkY1F7yazhB4Kt3VcZGL0ZF/jhrEpnXqUb0M7V3sw==", "dev": true, "dependencies": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.10", + "@babel/generator": "^7.18.0", "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-function-name": "^7.17.9", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.10", - "@babel/types": "^7.17.10", + "@babel/parser": "^7.18.0", + "@babel/types": "^7.18.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -605,9 +620,9 @@ } }, "node_modules/@babel/types": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.10.tgz", - "integrity": "sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.0.tgz", + "integrity": "sha512-vhAmLPAiC8j9K2GnsnLPCIH5wCrPpYIVBCWRBFDCB7Y/BXLqi/O+1RSTTM2bsmg6U/551+FCf9PNPxjABmxHTw==", "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.16.7", @@ -623,27 +638,28 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "node_modules/@cspotcode/source-map-consumer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", - "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", - "dev": true, - "engines": { - "node": ">= 12" - } - }, "node_modules/@cspotcode/source-map-support": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", - "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, "dependencies": { - "@cspotcode/source-map-consumer": "0.8.0" + "@jridgewell/trace-mapping": "0.3.9" }, "engines": { "node": ">=12" } }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", @@ -654,15 +670,15 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz", - "integrity": "sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", "dev": true, "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.3.2", - "globals": "^13.9.0", + "globals": "^13.15.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -693,6 +709,17 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "node_modules/@improbable-eng/grpc-web": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/@improbable-eng/grpc-web/-/grpc-web-0.14.1.tgz", + "integrity": "sha512-XaIYuunepPxoiGVLLHmlnVminUGzBTnXr8Wv7khzmLWbNw4TCwJKX09GSMJlKhu/TRk6gms0ySFxewaETSBqgw==", + "dependencies": { + "browser-headers": "^0.4.1" + }, + "peerDependencies": { + "google-protobuf": "^3.14.0" + } + }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -1080,7 +1107,7 @@ "node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" }, "node_modules/@protobufjs/base64": { "version": "1.1.2", @@ -1095,12 +1122,12 @@ "node_modules/@protobufjs/eventemitter": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" }, "node_modules/@protobufjs/fetch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", "dependencies": { "@protobufjs/aspromise": "^1.1.1", "@protobufjs/inquire": "^1.1.0" @@ -1109,27 +1136,27 @@ "node_modules/@protobufjs/float": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" }, "node_modules/@protobufjs/inquire": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" }, "node_modules/@protobufjs/path": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" }, "node_modules/@protobufjs/pool": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" }, "node_modules/@protobufjs/utf8": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" }, "node_modules/@sinonjs/commons": { "version": "1.8.3", @@ -1149,7 +1176,8 @@ "@sinonjs/commons": "^1.7.0" } }, - "node_modules/@terra-money/terra.proto": { + "node_modules/@terra-money/legacy.proto": { + "name": "@terra-money/terra.proto", "version": "0.1.7", "resolved": "https://registry.npmjs.org/@terra-money/terra.proto/-/terra.proto-0.1.7.tgz", "integrity": "sha512-NXD7f6pQCulvo6+mv6MAPzhOkUzRjgYVuHZE/apih+lVnPG5hDBU0rRYnOGGofwvKT5/jQoOENnFn/gioWWnyQ==", @@ -1159,6 +1187,17 @@ "protobufjs": "~6.11.2" } }, + "node_modules/@terra-money/terra.proto": { + "version": "0.2.0-beta.4", + "resolved": "https://registry.npmjs.org/@terra-money/terra.proto/-/terra.proto-0.2.0-beta.4.tgz", + "integrity": "sha512-ALwIOpiZgpELvUO27+Lgc4qQz6k5NB58YsUHX2Bf7gocspShRftps5kjj/bovZs/M6AO4J7Qj07QJRBekMinMA==", + "dependencies": { + "@improbable-eng/grpc-web": "^0.14.1", + "google-protobuf": "^3.17.3", + "long": "^4.0.0", + "protobufjs": "~6.11.2" + } + }, "node_modules/@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", @@ -1311,7 +1350,7 @@ "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, "node_modules/@types/long": { @@ -1320,9 +1359,9 @@ "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" }, "node_modules/@types/node": { - "version": "16.11.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.35.tgz", - "integrity": "sha512-QXu45LyepgnhUfnIAj/FyT4uM87ug5KpIrgXfQtUPNAlx8w5hmd8z8emqCLNvG11QkpRSCG9Qg2buMxvqfjfsQ==" + "version": "16.11.36", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.36.tgz", + "integrity": "sha512-FR5QJe+TaoZ2GsMHkjuwoNabr+UrJNRr2HNOo+r/7vhcuntM6Ee/pRPOnRhhL2XE9OOvX9VLEq+BcXl3VjNoWA==" }, "node_modules/@types/parse-json": { "version": "4.0.0", @@ -1392,19 +1431,19 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.23.0.tgz", - "integrity": "sha512-hEcSmG4XodSLiAp1uxv/OQSGsDY6QN3TcRU32gANp+19wGE1QQZLRS8/GV58VRUoXhnkuJ3ZxNQ3T6Z6zM59DA==", + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.25.0.tgz", + "integrity": "sha512-icYrFnUzvm+LhW0QeJNKkezBu6tJs9p/53dpPLFH8zoM9w1tfaKzVurkPotEpAqQ8Vf8uaFyL5jHd0Vs6Z0ZQg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.23.0", - "@typescript-eslint/type-utils": "5.23.0", - "@typescript-eslint/utils": "5.23.0", - "debug": "^4.3.2", + "@typescript-eslint/scope-manager": "5.25.0", + "@typescript-eslint/type-utils": "5.25.0", + "@typescript-eslint/utils": "5.25.0", + "debug": "^4.3.4", "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", + "ignore": "^5.2.0", "regexpp": "^3.2.0", - "semver": "^7.3.5", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "engines": { @@ -1425,15 +1464,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.23.0.tgz", - "integrity": "sha512-V06cYUkqcGqpFjb8ttVgzNF53tgbB/KoQT/iB++DOIExKmzI9vBJKjZKt/6FuV9c+zrDsvJKbJ2DOCYwX91cbw==", + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.25.0.tgz", + "integrity": "sha512-r3hwrOWYbNKP1nTcIw/aZoH+8bBnh/Lh1iDHoFpyG4DnCpvEdctrSl6LOo19fZbzypjQMHdajolxs6VpYoChgA==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "5.23.0", - "@typescript-eslint/types": "5.23.0", - "@typescript-eslint/typescript-estree": "5.23.0", - "debug": "^4.3.2" + "@typescript-eslint/scope-manager": "5.25.0", + "@typescript-eslint/types": "5.25.0", + "@typescript-eslint/typescript-estree": "5.25.0", + "debug": "^4.3.4" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1452,13 +1491,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.23.0.tgz", - "integrity": "sha512-EhjaFELQHCRb5wTwlGsNMvzK9b8Oco4aYNleeDlNuL6qXWDF47ch4EhVNPh8Rdhf9tmqbN4sWDk/8g+Z/J8JVw==", + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.25.0.tgz", + "integrity": "sha512-p4SKTFWj+2VpreUZ5xMQsBMDdQ9XdRvODKXN4EksyBjFp2YvQdLkyHqOffakYZPuWJUDNu3jVXtHALDyTv3cww==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.23.0", - "@typescript-eslint/visitor-keys": "5.23.0" + "@typescript-eslint/types": "5.25.0", + "@typescript-eslint/visitor-keys": "5.25.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1469,13 +1508,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.23.0.tgz", - "integrity": "sha512-iuI05JsJl/SUnOTXA9f4oI+/4qS/Zcgk+s2ir+lRmXI+80D8GaGwoUqs4p+X+4AxDolPpEpVUdlEH4ADxFy4gw==", + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.25.0.tgz", + "integrity": "sha512-B6nb3GK3Gv1Rsb2pqalebe/RyQoyG/WDy9yhj8EE0Ikds4Xa8RR28nHz+wlt4tMZk5bnAr0f3oC8TuDAd5CPrw==", "dev": true, "dependencies": { - "@typescript-eslint/utils": "5.23.0", - "debug": "^4.3.2", + "@typescript-eslint/utils": "5.25.0", + "debug": "^4.3.4", "tsutils": "^3.21.0" }, "engines": { @@ -1495,9 +1534,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.23.0.tgz", - "integrity": "sha512-NfBsV/h4dir/8mJwdZz7JFibaKC3E/QdeMEDJhiAE3/eMkoniZ7MjbEMCGXw6MZnZDMN3G9S0mH/6WUIj91dmw==", + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.25.0.tgz", + "integrity": "sha512-7fWqfxr0KNHj75PFqlGX24gWjdV/FDBABXL5dyvBOWHpACGyveok8Uj4ipPX/1fGU63fBkzSIycEje4XsOxUFA==", "dev": true, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1508,17 +1547,17 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.23.0.tgz", - "integrity": "sha512-xE9e0lrHhI647SlGMl+m+3E3CKPF1wzvvOEWnuE3CCjjT7UiRnDGJxmAcVKJIlFgK6DY9RB98eLr1OPigPEOGg==", + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.25.0.tgz", + "integrity": "sha512-MrPODKDych/oWs/71LCnuO7NyR681HuBly2uLnX3r5i4ME7q/yBqC4hW33kmxtuauLTM0OuBOhhkFaxCCOjEEw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.23.0", - "@typescript-eslint/visitor-keys": "5.23.0", - "debug": "^4.3.2", - "globby": "^11.0.4", + "@typescript-eslint/types": "5.25.0", + "@typescript-eslint/visitor-keys": "5.25.0", + "debug": "^4.3.4", + "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.5", + "semver": "^7.3.7", "tsutils": "^3.21.0" }, "engines": { @@ -1535,15 +1574,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.23.0.tgz", - "integrity": "sha512-dbgaKN21drqpkbbedGMNPCtRPZo1IOUr5EI9Jrrh99r5UW5Q0dz46RKXeSBoPV+56R6dFKpbrdhgUNSJsDDRZA==", + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.25.0.tgz", + "integrity": "sha512-qNC9bhnz/n9Kba3yI6HQgQdBLuxDoMgdjzdhSInZh6NaDnFpTUlwNGxplUFWfY260Ya0TRPvkg9dd57qxrJI9g==", "dev": true, "dependencies": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.23.0", - "@typescript-eslint/types": "5.23.0", - "@typescript-eslint/typescript-estree": "5.23.0", + "@typescript-eslint/scope-manager": "5.25.0", + "@typescript-eslint/types": "5.25.0", + "@typescript-eslint/typescript-estree": "5.25.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" }, @@ -1559,13 +1598,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.23.0.tgz", - "integrity": "sha512-Vd4mFNchU62sJB8pX19ZSPog05B0Y0CE2UxAZPT5k4iqhRYjPnqyY3woMxCd0++t9OTqkgjST+1ydLBi7e2Fvg==", + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.25.0.tgz", + "integrity": "sha512-yd26vFgMsC4h2dgX4+LR+GeicSKIfUvZREFLf3DDjZPtqgLx5AJZr6TetMNwFP9hcKreTTeztQYBTNbNoOycwA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "5.23.0", - "eslint-visitor-keys": "^3.0.0" + "@typescript-eslint/types": "5.25.0", + "eslint-visitor-keys": "^3.3.0" }, "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" @@ -1887,9 +1926,9 @@ } }, "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, "engines": { "node": ">=6" @@ -1992,7 +2031,7 @@ "node_modules/asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, "node_modules/axios": { @@ -2208,7 +2247,12 @@ "node_modules/brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, + "node_modules/browser-headers": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/browser-headers/-/browser-headers-0.4.1.tgz", + "integrity": "sha512-CA9hsySZVo9371qEHjHZtYxV2cFtVj5Wj/ZHi8ooEsrtm4vOnl9Y9HmyYWk9q+05d7K3rdoAE0j3MVEFVvtQtg==" }, "node_modules/browser-process-hrtime": { "version": "1.0.0", @@ -2260,7 +2304,7 @@ "node_modules/bs58": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", "dependencies": { "base-x": "^3.0.2" } @@ -2345,9 +2389,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001341", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001341.tgz", - "integrity": "sha512-2SodVrFFtvGENGCv0ChVJIDQ0KPaS1cg7/qtfMaICgeMolDdo/Z2OD32F0Aq9yl6F4YFwGPBS5AaPqNYiW4PoA==", + "version": "1.0.30001342", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001342.tgz", + "integrity": "sha512-bn6sOCu7L7jcbBbyNhLg0qzXdJ/PMbybZTH/BA6Roet9wxYRm6Tr9D0s0uhLkOZ6MSG+QU6txUgdpr3MXIVqjA==", "dev": true, "funding": [ { @@ -2996,12 +3040,12 @@ } }, "node_modules/eslint": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz", - "integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz", + "integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==", "dev": true, "dependencies": { - "@eslint/eslintrc": "^1.2.3", + "@eslint/eslintrc": "^1.3.0", "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -3019,7 +3063,7 @@ "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", - "globals": "^13.6.0", + "globals": "^13.15.0", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -3517,9 +3561,9 @@ } }, "node_modules/glob": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.2.tgz", - "integrity": "sha512-NzDgHDiJwKYByLrL5lONmQFpK/2G78SMMfo+E9CuGlX4IkvfKDsiQSNPwAYxEy+e6p7ZQ3uslSLlwlJcqezBmQ==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -5169,9 +5213,9 @@ } }, "node_modules/marked": { - "version": "4.0.15", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.15.tgz", - "integrity": "sha512-esX5lPdTfG4p8LDkv+obbRCyOKzB+820ZZyMOXJZygZBHrH9b3xXR64X4kT3sPe9Nx8qQXbmcz6kFSMt4Nfk6Q==", + "version": "4.0.16", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.16.tgz", + "integrity": "sha512-wahonIQ5Jnyatt2fn8KqF/nIqZM8mh3oRu2+l5EANGMhu6RFjiSG52QNE2eWzFMI94HqYSgN184NurgNG6CztA==", "dev": true, "bin": { "marked": "bin/marked.js" @@ -5744,9 +5788,9 @@ } }, "node_modules/protobufjs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.2.tgz", - "integrity": "sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw==", + "version": "6.11.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", + "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", "hasInstallScript": true, "dependencies": { "@protobufjs/aspromise": "^1.1.2", @@ -6671,9 +6715,9 @@ } }, "node_modules/ts-jest": { - "version": "27.1.4", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.4.tgz", - "integrity": "sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==", + "version": "27.1.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", + "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", "dev": true, "dependencies": { "bs-logger": "0.x", @@ -6733,12 +6777,12 @@ } }, "node_modules/ts-node": { - "version": "10.7.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz", - "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==", + "version": "10.8.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.8.0.tgz", + "integrity": "sha512-/fNd5Qh+zTt8Vt1KbYZjRHCE9sI5i7nqfD/dzBBRDeVXZXS6kToW6R7tTU6Nd4XavFs0mAVCg29Q//ML7WsZYA==", "dev": true, "dependencies": { - "@cspotcode/source-map-support": "0.7.0", + "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", "@tsconfig/node12": "^1.0.7", "@tsconfig/node14": "^1.0.0", @@ -6749,7 +6793,7 @@ "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.0", + "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" }, "bin": { @@ -6929,9 +6973,9 @@ } }, "node_modules/typedoc/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", "dev": true, "dependencies": { "brace-expansion": "^2.0.1" @@ -7496,21 +7540,21 @@ "dev": true }, "@babel/core": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz", - "integrity": "sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.0.tgz", + "integrity": "sha512-Xyw74OlJwDijToNi0+6BBI5mLLR5+5R3bcSH80LXzjzEGEUlvNzujEE71BaD/ApEZHAvFI/Mlmp4M5lIkdeeWw==", "dev": true, "requires": { "@ampproject/remapping": "^2.1.0", "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.10", + "@babel/generator": "^7.18.0", "@babel/helper-compilation-targets": "^7.17.10", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.10", + "@babel/helper-module-transforms": "^7.18.0", + "@babel/helpers": "^7.18.0", + "@babel/parser": "^7.18.0", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.10", - "@babel/types": "^7.17.10", + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0", "convert-source-map": "^1.7.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -7527,14 +7571,27 @@ } }, "@babel/generator": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz", - "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.0.tgz", + "integrity": "sha512-81YO9gGx6voPXlvYdZBliFXAZU8vZ9AZ6z+CjlmcnaeOcYSFbMTpdeDUO9xD9dh/68Vq03I8ZspfUTPfitcDHg==", "dev": true, "requires": { - "@babel/types": "^7.17.10", - "@jridgewell/gen-mapping": "^0.1.0", + "@babel/types": "^7.18.0", + "@jridgewell/gen-mapping": "^0.3.0", "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.1.tgz", + "integrity": "sha512-GcHwniMlA2z+WFPWuY8lp3fsza0I8xPFMWL5+n8LYyP6PSvPrXf4+n8stDHZY2DM0zy9sVkRDy1jDI4XGzYVqg==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } } }, "@babel/helper-compilation-targets": { @@ -7595,9 +7652,9 @@ } }, "@babel/helper-module-transforms": { - "version": "7.17.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", - "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.0.tgz", + "integrity": "sha512-kclUYSUBIjlvnzN2++K9f2qzYKFgjmnmjwL4zlmU5f8ZtzgWe8s0rUPSTGy2HmK4P8T52MQsS+HTQAgZd3dMEA==", "dev": true, "requires": { "@babel/helper-environment-visitor": "^7.16.7", @@ -7606,14 +7663,14 @@ "@babel/helper-split-export-declaration": "^7.16.7", "@babel/helper-validator-identifier": "^7.16.7", "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.3", - "@babel/types": "^7.17.0" + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0" } }, "@babel/helper-plugin-utils": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", - "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.17.12.tgz", + "integrity": "sha512-JDkf04mqtN3y4iAbO1hv9U2ARpPyPL1zqyWs/2WG1pgSq9llHFjStX5jdxb84himgJm+8Ng+x0oiWF/nw/XQKA==", "dev": true }, "@babel/helper-simple-access": { @@ -7647,20 +7704,20 @@ "dev": true }, "@babel/helpers": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", - "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.0.tgz", + "integrity": "sha512-AE+HMYhmlMIbho9nbvicHyxFwhrO+xhKB6AhRxzl8w46Yj0VXTZjEsAoBVC7rB2I0jzX+yWyVybnO08qkfx6kg==", "dev": true, "requires": { "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.9", - "@babel/types": "^7.17.0" + "@babel/traverse": "^7.18.0", + "@babel/types": "^7.18.0" } }, "@babel/highlight": { - "version": "7.17.9", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", - "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.12.tgz", + "integrity": "sha512-7yykMVF3hfZY2jsHZEEgLc+3x4o1O+fYyULu11GynEUQNwB6lua+IIQn1FiJxNucd5UlyJryrwsOh8PL9Sn8Qg==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.16.7", @@ -7727,9 +7784,9 @@ } }, "@babel/parser": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.10.tgz", - "integrity": "sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-AqDccGC+m5O/iUStSJy3DGRIUFu7WbY/CppZYwrEUB4N0tZlnI8CSTsgL7v5fHVFmUbRv2sd+yy27o8Ydt4MGg==", "dev": true }, "@babel/plugin-syntax-async-generators": { @@ -7841,12 +7898,12 @@ } }, "@babel/plugin-syntax-typescript": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.10.tgz", - "integrity": "sha512-xJefea1DWXW09pW4Tm9bjwVlPDyYA2it3fWlmEjpYz6alPvTUjL0EOzNzI/FEOyI3r4/J7uVH5UqKgl1TQ5hqQ==", + "version": "7.17.12", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.17.12.tgz", + "integrity": "sha512-TYY0SXFiO31YXtNg3HtFwNJHjLsAyIIhAhNWkQ5whPPS7HWUFlg9z0Ta4qAQNjQbP1wsSt/oKkmZ/4/WWdMUpw==", "dev": true, "requires": { - "@babel/helper-plugin-utils": "^7.16.7" + "@babel/helper-plugin-utils": "^7.17.12" } }, "@babel/template": { @@ -7861,19 +7918,19 @@ } }, "@babel/traverse": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.10.tgz", - "integrity": "sha512-VmbrTHQteIdUUQNTb+zE12SHS/xQVIShmBPhlNP12hD5poF2pbITW1Z4172d03HegaQWhLffdkRJYtAzp0AGcw==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.0.tgz", + "integrity": "sha512-oNOO4vaoIQoGjDQ84LgtF/IAlxlyqL4TUuoQ7xLkQETFaHkY1F7yazhB4Kt3VcZGL0ZF/jhrEpnXqUb0M7V3sw==", "dev": true, "requires": { "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.10", + "@babel/generator": "^7.18.0", "@babel/helper-environment-visitor": "^7.16.7", "@babel/helper-function-name": "^7.17.9", "@babel/helper-hoist-variables": "^7.16.7", "@babel/helper-split-export-declaration": "^7.16.7", - "@babel/parser": "^7.17.10", - "@babel/types": "^7.17.10", + "@babel/parser": "^7.18.0", + "@babel/types": "^7.18.0", "debug": "^4.1.0", "globals": "^11.1.0" }, @@ -7887,9 +7944,9 @@ } }, "@babel/types": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.10.tgz", - "integrity": "sha512-9O26jG0mBYfGkUYCYZRnBwbVLd1UZOICEr2Em6InB6jVfsAv1GKgwXHmrSg+WFWDmeKTA6vyTZiN8tCSM5Oo3A==", + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.0.tgz", + "integrity": "sha512-vhAmLPAiC8j9K2GnsnLPCIH5wCrPpYIVBCWRBFDCB7Y/BXLqi/O+1RSTTM2bsmg6U/551+FCf9PNPxjABmxHTw==", "dev": true, "requires": { "@babel/helper-validator-identifier": "^7.16.7", @@ -7902,19 +7959,25 @@ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", "dev": true }, - "@cspotcode/source-map-consumer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-consumer/-/source-map-consumer-0.8.0.tgz", - "integrity": "sha512-41qniHzTU8yAGbCp04ohlmSrZf8bkf/iJsl3V0dRGsQN/5GFfx+LbCSsCpp2gqrqjTVg/K6O8ycoV35JIwAzAg==", - "dev": true - }, "@cspotcode/source-map-support": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.7.0.tgz", - "integrity": "sha512-X4xqRHqN8ACt2aHVe51OxeA2HjbcL4MqFqXkrmQszJ1NOUuUu5u6Vqx/0lZSVNku7velL5FC/s5uEAj1lsBMhA==", + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "dev": true, "requires": { - "@cspotcode/source-map-consumer": "0.8.0" + "@jridgewell/trace-mapping": "0.3.9" + }, + "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } } }, "@discoveryjs/json-ext": { @@ -7924,15 +7987,15 @@ "dev": true }, "@eslint/eslintrc": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.2.3.tgz", - "integrity": "sha512-uGo44hIwoLGNyduRpjdEpovcbMdd+Nv7amtmJxnKmI8xj6yd5LncmSwDa5NgX/41lIFJtkjD6YdVfgEzPfJ5UA==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.0.tgz", + "integrity": "sha512-UWW0TMTmk2d7hLcWD1/e2g5HDM/HQ3csaLSqXCfqwh4uNDuNqlaKWXmEsL4Cs41Z0KnILNvwbHAah3C2yt06kw==", "dev": true, "requires": { "ajv": "^6.12.4", "debug": "^4.3.2", "espree": "^9.3.2", - "globals": "^13.9.0", + "globals": "^13.15.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.0", @@ -7957,6 +8020,14 @@ "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", "dev": true }, + "@improbable-eng/grpc-web": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/@improbable-eng/grpc-web/-/grpc-web-0.14.1.tgz", + "integrity": "sha512-XaIYuunepPxoiGVLLHmlnVminUGzBTnXr8Wv7khzmLWbNw4TCwJKX09GSMJlKhu/TRk6gms0ySFxewaETSBqgw==", + "requires": { + "browser-headers": "^0.4.1" + } + }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -8267,7 +8338,7 @@ "@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", - "integrity": "sha1-m4sMxmPWaafY9vXQiToU00jzD78=" + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" }, "@protobufjs/base64": { "version": "1.1.2", @@ -8282,12 +8353,12 @@ "@protobufjs/eventemitter": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", - "integrity": "sha1-NVy8mLr61ZePntCV85diHx0Ga3A=" + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" }, "@protobufjs/fetch": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", - "integrity": "sha1-upn7WYYUr2VwDBYZ/wbUVLDYTEU=", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", "requires": { "@protobufjs/aspromise": "^1.1.1", "@protobufjs/inquire": "^1.1.0" @@ -8296,27 +8367,27 @@ "@protobufjs/float": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", - "integrity": "sha1-Xp4avctz/Ap8uLKR33jIy9l7h9E=" + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" }, "@protobufjs/inquire": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", - "integrity": "sha1-/yAOPnzyQp4tyvwRQIKOjMY48Ik=" + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" }, "@protobufjs/path": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", - "integrity": "sha1-bMKyDFya1q0NzP0hynZz2Nf79o0=" + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" }, "@protobufjs/pool": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", - "integrity": "sha1-Cf0V8tbTq/qbZbw2ZQbWrXhG/1Q=" + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" }, "@protobufjs/utf8": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", - "integrity": "sha1-p3c2C1s5oaLlEG+OhY8v0tBgxXA=" + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" }, "@sinonjs/commons": { "version": "1.8.3", @@ -8336,8 +8407,8 @@ "@sinonjs/commons": "^1.7.0" } }, - "@terra-money/terra.proto": { - "version": "0.1.7", + "@terra-money/legacy.proto": { + "version": "npm:@terra-money/terra.proto@0.1.7", "resolved": "https://registry.npmjs.org/@terra-money/terra.proto/-/terra.proto-0.1.7.tgz", "integrity": "sha512-NXD7f6pQCulvo6+mv6MAPzhOkUzRjgYVuHZE/apih+lVnPG5hDBU0rRYnOGGofwvKT5/jQoOENnFn/gioWWnyQ==", "requires": { @@ -8346,6 +8417,17 @@ "protobufjs": "~6.11.2" } }, + "@terra-money/terra.proto": { + "version": "0.2.0-beta.4", + "resolved": "https://registry.npmjs.org/@terra-money/terra.proto/-/terra.proto-0.2.0-beta.4.tgz", + "integrity": "sha512-ALwIOpiZgpELvUO27+Lgc4qQz6k5NB58YsUHX2Bf7gocspShRftps5kjj/bovZs/M6AO4J7Qj07QJRBekMinMA==", + "requires": { + "@improbable-eng/grpc-web": "^0.14.1", + "google-protobuf": "^3.17.3", + "long": "^4.0.0", + "protobufjs": "~6.11.2" + } + }, "@tootallnate/once": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", @@ -8495,7 +8577,7 @@ "@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha1-7ihweulOEdK4J7y+UnC86n8+ce4=", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, "@types/long": { @@ -8504,9 +8586,9 @@ "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==" }, "@types/node": { - "version": "16.11.35", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.35.tgz", - "integrity": "sha512-QXu45LyepgnhUfnIAj/FyT4uM87ug5KpIrgXfQtUPNAlx8w5hmd8z8emqCLNvG11QkpRSCG9Qg2buMxvqfjfsQ==" + "version": "16.11.36", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.36.tgz", + "integrity": "sha512-FR5QJe+TaoZ2GsMHkjuwoNabr+UrJNRr2HNOo+r/7vhcuntM6Ee/pRPOnRhhL2XE9OOvX9VLEq+BcXl3VjNoWA==" }, "@types/parse-json": { "version": "4.0.0", @@ -8576,98 +8658,98 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.23.0.tgz", - "integrity": "sha512-hEcSmG4XodSLiAp1uxv/OQSGsDY6QN3TcRU32gANp+19wGE1QQZLRS8/GV58VRUoXhnkuJ3ZxNQ3T6Z6zM59DA==", + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.25.0.tgz", + "integrity": "sha512-icYrFnUzvm+LhW0QeJNKkezBu6tJs9p/53dpPLFH8zoM9w1tfaKzVurkPotEpAqQ8Vf8uaFyL5jHd0Vs6Z0ZQg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.23.0", - "@typescript-eslint/type-utils": "5.23.0", - "@typescript-eslint/utils": "5.23.0", - "debug": "^4.3.2", + "@typescript-eslint/scope-manager": "5.25.0", + "@typescript-eslint/type-utils": "5.25.0", + "@typescript-eslint/utils": "5.25.0", + "debug": "^4.3.4", "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", + "ignore": "^5.2.0", "regexpp": "^3.2.0", - "semver": "^7.3.5", + "semver": "^7.3.7", "tsutils": "^3.21.0" } }, "@typescript-eslint/parser": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.23.0.tgz", - "integrity": "sha512-V06cYUkqcGqpFjb8ttVgzNF53tgbB/KoQT/iB++DOIExKmzI9vBJKjZKt/6FuV9c+zrDsvJKbJ2DOCYwX91cbw==", + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.25.0.tgz", + "integrity": "sha512-r3hwrOWYbNKP1nTcIw/aZoH+8bBnh/Lh1iDHoFpyG4DnCpvEdctrSl6LOo19fZbzypjQMHdajolxs6VpYoChgA==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "5.23.0", - "@typescript-eslint/types": "5.23.0", - "@typescript-eslint/typescript-estree": "5.23.0", - "debug": "^4.3.2" + "@typescript-eslint/scope-manager": "5.25.0", + "@typescript-eslint/types": "5.25.0", + "@typescript-eslint/typescript-estree": "5.25.0", + "debug": "^4.3.4" } }, "@typescript-eslint/scope-manager": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.23.0.tgz", - "integrity": "sha512-EhjaFELQHCRb5wTwlGsNMvzK9b8Oco4aYNleeDlNuL6qXWDF47ch4EhVNPh8Rdhf9tmqbN4sWDk/8g+Z/J8JVw==", + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.25.0.tgz", + "integrity": "sha512-p4SKTFWj+2VpreUZ5xMQsBMDdQ9XdRvODKXN4EksyBjFp2YvQdLkyHqOffakYZPuWJUDNu3jVXtHALDyTv3cww==", "dev": true, "requires": { - "@typescript-eslint/types": "5.23.0", - "@typescript-eslint/visitor-keys": "5.23.0" + "@typescript-eslint/types": "5.25.0", + "@typescript-eslint/visitor-keys": "5.25.0" } }, "@typescript-eslint/type-utils": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.23.0.tgz", - "integrity": "sha512-iuI05JsJl/SUnOTXA9f4oI+/4qS/Zcgk+s2ir+lRmXI+80D8GaGwoUqs4p+X+4AxDolPpEpVUdlEH4ADxFy4gw==", + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.25.0.tgz", + "integrity": "sha512-B6nb3GK3Gv1Rsb2pqalebe/RyQoyG/WDy9yhj8EE0Ikds4Xa8RR28nHz+wlt4tMZk5bnAr0f3oC8TuDAd5CPrw==", "dev": true, "requires": { - "@typescript-eslint/utils": "5.23.0", - "debug": "^4.3.2", + "@typescript-eslint/utils": "5.25.0", + "debug": "^4.3.4", "tsutils": "^3.21.0" } }, "@typescript-eslint/types": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.23.0.tgz", - "integrity": "sha512-NfBsV/h4dir/8mJwdZz7JFibaKC3E/QdeMEDJhiAE3/eMkoniZ7MjbEMCGXw6MZnZDMN3G9S0mH/6WUIj91dmw==", + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.25.0.tgz", + "integrity": "sha512-7fWqfxr0KNHj75PFqlGX24gWjdV/FDBABXL5dyvBOWHpACGyveok8Uj4ipPX/1fGU63fBkzSIycEje4XsOxUFA==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.23.0.tgz", - "integrity": "sha512-xE9e0lrHhI647SlGMl+m+3E3CKPF1wzvvOEWnuE3CCjjT7UiRnDGJxmAcVKJIlFgK6DY9RB98eLr1OPigPEOGg==", + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.25.0.tgz", + "integrity": "sha512-MrPODKDych/oWs/71LCnuO7NyR681HuBly2uLnX3r5i4ME7q/yBqC4hW33kmxtuauLTM0OuBOhhkFaxCCOjEEw==", "dev": true, "requires": { - "@typescript-eslint/types": "5.23.0", - "@typescript-eslint/visitor-keys": "5.23.0", - "debug": "^4.3.2", - "globby": "^11.0.4", + "@typescript-eslint/types": "5.25.0", + "@typescript-eslint/visitor-keys": "5.25.0", + "debug": "^4.3.4", + "globby": "^11.1.0", "is-glob": "^4.0.3", - "semver": "^7.3.5", + "semver": "^7.3.7", "tsutils": "^3.21.0" } }, "@typescript-eslint/utils": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.23.0.tgz", - "integrity": "sha512-dbgaKN21drqpkbbedGMNPCtRPZo1IOUr5EI9Jrrh99r5UW5Q0dz46RKXeSBoPV+56R6dFKpbrdhgUNSJsDDRZA==", + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.25.0.tgz", + "integrity": "sha512-qNC9bhnz/n9Kba3yI6HQgQdBLuxDoMgdjzdhSInZh6NaDnFpTUlwNGxplUFWfY260Ya0TRPvkg9dd57qxrJI9g==", "dev": true, "requires": { "@types/json-schema": "^7.0.9", - "@typescript-eslint/scope-manager": "5.23.0", - "@typescript-eslint/types": "5.23.0", - "@typescript-eslint/typescript-estree": "5.23.0", + "@typescript-eslint/scope-manager": "5.25.0", + "@typescript-eslint/types": "5.25.0", + "@typescript-eslint/typescript-estree": "5.25.0", "eslint-scope": "^5.1.1", "eslint-utils": "^3.0.0" } }, "@typescript-eslint/visitor-keys": { - "version": "5.23.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.23.0.tgz", - "integrity": "sha512-Vd4mFNchU62sJB8pX19ZSPog05B0Y0CE2UxAZPT5k4iqhRYjPnqyY3woMxCd0++t9OTqkgjST+1ydLBi7e2Fvg==", + "version": "5.25.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.25.0.tgz", + "integrity": "sha512-yd26vFgMsC4h2dgX4+LR+GeicSKIfUvZREFLf3DDjZPtqgLx5AJZr6TetMNwFP9hcKreTTeztQYBTNbNoOycwA==", "dev": true, "requires": { - "@typescript-eslint/types": "5.23.0", - "eslint-visitor-keys": "^3.0.0" + "@typescript-eslint/types": "5.25.0", + "eslint-visitor-keys": "^3.3.0" } }, "@webassemblyjs/ast": { @@ -8940,9 +9022,9 @@ "requires": {} }, "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true }, "ansi-escapes": { @@ -9014,7 +9096,7 @@ "asynckit": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", "dev": true }, "axios": { @@ -9193,7 +9275,12 @@ "brorand": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=" + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==" + }, + "browser-headers": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/browser-headers/-/browser-headers-0.4.1.tgz", + "integrity": "sha512-CA9hsySZVo9371qEHjHZtYxV2cFtVj5Wj/ZHi8ooEsrtm4vOnl9Y9HmyYWk9q+05d7K3rdoAE0j3MVEFVvtQtg==" }, "browser-process-hrtime": { "version": "1.0.0", @@ -9226,7 +9313,7 @@ "bs58": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha1-vhYedsNU9veIrkBx9j806MTwpCo=", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", "requires": { "base-x": "^3.0.2" } @@ -9287,9 +9374,9 @@ "dev": true }, "caniuse-lite": { - "version": "1.0.30001341", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001341.tgz", - "integrity": "sha512-2SodVrFFtvGENGCv0ChVJIDQ0KPaS1cg7/qtfMaICgeMolDdo/Z2OD32F0Aq9yl6F4YFwGPBS5AaPqNYiW4PoA==", + "version": "1.0.30001342", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001342.tgz", + "integrity": "sha512-bn6sOCu7L7jcbBbyNhLg0qzXdJ/PMbybZTH/BA6Roet9wxYRm6Tr9D0s0uhLkOZ6MSG+QU6txUgdpr3MXIVqjA==", "dev": true }, "chalk": { @@ -9798,12 +9885,12 @@ } }, "eslint": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.15.0.tgz", - "integrity": "sha512-GG5USZ1jhCu8HJkzGgeK8/+RGnHaNYZGrGDzUtigK3BsGESW/rs2az23XqE0WVwDxy1VRvvjSSGu5nB0Bu+6SA==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.16.0.tgz", + "integrity": "sha512-MBndsoXY/PeVTDJeWsYj7kLZ5hQpJOfMYLsF6LicLHQWbRDG19lK5jOix4DPl8yY4SUFcE3txy86OzFLWT+yoA==", "dev": true, "requires": { - "@eslint/eslintrc": "^1.2.3", + "@eslint/eslintrc": "^1.3.0", "@humanwhocodes/config-array": "^0.9.2", "ajv": "^6.10.0", "chalk": "^4.0.0", @@ -9821,7 +9908,7 @@ "file-entry-cache": "^6.0.1", "functional-red-black-tree": "^1.0.1", "glob-parent": "^6.0.1", - "globals": "^13.6.0", + "globals": "^13.15.0", "ignore": "^5.2.0", "import-fresh": "^3.0.0", "imurmurhash": "^0.1.4", @@ -10190,9 +10277,9 @@ "dev": true }, "glob": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.2.tgz", - "integrity": "sha512-NzDgHDiJwKYByLrL5lONmQFpK/2G78SMMfo+E9CuGlX4IkvfKDsiQSNPwAYxEy+e6p7ZQ3uslSLlwlJcqezBmQ==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -11443,9 +11530,9 @@ } }, "marked": { - "version": "4.0.15", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.15.tgz", - "integrity": "sha512-esX5lPdTfG4p8LDkv+obbRCyOKzB+820ZZyMOXJZygZBHrH9b3xXR64X4kT3sPe9Nx8qQXbmcz6kFSMt4Nfk6Q==", + "version": "4.0.16", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.0.16.tgz", + "integrity": "sha512-wahonIQ5Jnyatt2fn8KqF/nIqZM8mh3oRu2+l5EANGMhu6RFjiSG52QNE2eWzFMI94HqYSgN184NurgNG6CztA==", "dev": true }, "md5.js": { @@ -11864,9 +11951,9 @@ } }, "protobufjs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.2.tgz", - "integrity": "sha512-4BQJoPooKJl2G9j3XftkIXjoC9C0Av2NOrWmbLWT1vH32GcSUHjM0Arra6UfTsVyfMAuFzaLucXn1sadxJydAw==", + "version": "6.11.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-6.11.3.tgz", + "integrity": "sha512-xL96WDdCZYdU7Slin569tFX712BxsxslWwAfAhCYjQKGTq7dAU91Lomy6nLLhh/dyGhk/YH4TwTSRxTzhuHyZg==", "requires": { "@protobufjs/aspromise": "^1.1.2", "@protobufjs/base64": "^1.1.2", @@ -12542,9 +12629,9 @@ } }, "ts-jest": { - "version": "27.1.4", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.4.tgz", - "integrity": "sha512-qjkZlVPWVctAezwsOD1OPzbZ+k7zA5z3oxII4dGdZo5ggX/PL7kvwTM0pXTr10fAtbiVpJaL3bWd502zAhpgSQ==", + "version": "27.1.5", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-27.1.5.tgz", + "integrity": "sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==", "dev": true, "requires": { "bs-logger": "0.x", @@ -12570,12 +12657,12 @@ } }, "ts-node": { - "version": "10.7.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.7.0.tgz", - "integrity": "sha512-TbIGS4xgJoX2i3do417KSaep1uRAW/Lu+WAL2doDHC0D6ummjirVOXU5/7aiZotbQ5p1Zp9tP7U6cYhA0O7M8A==", + "version": "10.8.0", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.8.0.tgz", + "integrity": "sha512-/fNd5Qh+zTt8Vt1KbYZjRHCE9sI5i7nqfD/dzBBRDeVXZXS6kToW6R7tTU6Nd4XavFs0mAVCg29Q//ML7WsZYA==", "dev": true, "requires": { - "@cspotcode/source-map-support": "0.7.0", + "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", "@tsconfig/node12": "^1.0.7", "@tsconfig/node14": "^1.0.0", @@ -12586,7 +12673,7 @@ "create-require": "^1.1.0", "diff": "^4.0.1", "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.0", + "v8-compile-cache-lib": "^3.0.1", "yn": "3.1.1" }, "dependencies": { @@ -12714,9 +12801,9 @@ } }, "minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", "dev": true, "requires": { "brace-expansion": "^2.0.1" diff --git a/package.json b/package.json index 1dc69b076..e4271da57 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@terra-money/terra.js", - "version": "3.0.12", + "version": "3.1.0", "description": "The JavaScript SDK for Terra", "license": "MIT", "author": "Terraform Labs, PTE.", @@ -83,7 +83,8 @@ "webpack-cli": "^4.3.0" }, "dependencies": { - "@terra-money/terra.proto": "^0.1.7", + "@terra-money/legacy.proto": "npm:@terra-money/terra.proto@^0.1.7", + "@terra-money/terra.proto": "^0.2.0-beta.4", "axios": "^0.26.1", "bech32": "^2.0.0", "bip32": "^2.0.6", diff --git a/src/client/LocalTerra.ts b/src/client/LocalTerra.ts index e4702912d..95e13f489 100644 --- a/src/client/LocalTerra.ts +++ b/src/client/LocalTerra.ts @@ -42,10 +42,11 @@ export class LocalTerra extends LCDClient { test10: Wallet; }; - constructor() { + constructor(isClassic?: boolean) { super({ URL: 'http://localhost:1317', chainID: 'localterra', + isClassic, }); this.wallets = { diff --git a/src/client/lcd/APIRequester.ts b/src/client/lcd/APIRequester.ts index 649abf438..a9d2d5e07 100644 --- a/src/client/lcd/APIRequester.ts +++ b/src/client/lcd/APIRequester.ts @@ -1,5 +1,5 @@ import Axios, { AxiosInstance } from 'axios'; -import { OrderBy as OrderBy_pb } from '@terra-money/terra.proto/cosmos/tx/v1beta1/service'; +import { OrderBy as OrderBy_pb } from '@terra-money/legacy.proto/cosmos/tx/v1beta1/service'; export type APIParams = Record; diff --git a/src/client/lcd/LCDClient.ts b/src/client/lcd/LCDClient.ts index 4f555500d..7edff2132 100644 --- a/src/client/lcd/LCDClient.ts +++ b/src/client/lcd/LCDClient.ts @@ -16,6 +16,7 @@ import { TxAPI, WasmAPI, IbcTransferAPI, + IbcAPI, } from './api'; import { LCDUtils } from './LCDUtils'; import { Wallet } from './Wallet'; @@ -43,15 +44,29 @@ export interface LCDClientConfig { * Number presenting the default gas adjustment value to use for fee estimation. */ gasAdjustment?: Numeric.Input; + + /** + * is it connected to forked network? + */ + isClassic?: boolean; } const DEFAULT_LCD_OPTIONS: Partial = { gasAdjustment: 1.75, }; +// isClassic network: true +// forked network : false +const DEFAULT_NETWORK_TYPE_BY_CHAIN_ID: { [key: string]: boolean } = { + default: false, + 'columbus-5': true, + 'bombay-12': true, + 'pisco-1': false, +}; + const DEFAULT_GAS_PRICES_BY_CHAIN_ID: { [key: string]: Coins.Input } = { default: { - uusd: 0.15, + uluna: 0.15, }, 'columbus-5': { uusd: 0.15, @@ -59,6 +74,9 @@ const DEFAULT_GAS_PRICES_BY_CHAIN_ID: { [key: string]: Coins.Input } = { 'bombay-12': { uusd: 0.15, }, + 'pisco-1': { + uluna: 0.15, + }, }; /** @@ -99,6 +117,7 @@ export class LCDClient { public treasury: TreasuryAPI; public wasm: WasmAPI; public tx: TxAPI; + public ibc: IbcAPI; public ibcTransfer: IbcTransferAPI; public utils: LCDUtils; @@ -113,29 +132,32 @@ export class LCDClient { gasPrices: DEFAULT_GAS_PRICES_BY_CHAIN_ID[config.chainID] || DEFAULT_GAS_PRICES_BY_CHAIN_ID['default'], + isClassic: + DEFAULT_NETWORK_TYPE_BY_CHAIN_ID[config.chainID] || + DEFAULT_NETWORK_TYPE_BY_CHAIN_ID['default'], ...config, }; this.apiRequester = new APIRequester(this.config.URL); // instantiate APIs - this.auth = new AuthAPI(this.apiRequester); - this.bank = new BankAPI(this.apiRequester); - this.distribution = new DistributionAPI(this.apiRequester); - this.feeGrant = new FeeGrantAPI(this.apiRequester); - this.gov = new GovAPI(this.apiRequester); - this.market = new MarketAPI(this.apiRequester); - this.mint = new MintAPI(this.apiRequester); - this.authz = new AuthzAPI(this.apiRequester); - this.oracle = new OracleAPI(this.apiRequester); - this.slashing = new SlashingAPI(this.apiRequester); - this.staking = new StakingAPI(this.apiRequester); - this.tendermint = new TendermintAPI(this.apiRequester); - this.treasury = new TreasuryAPI(this.apiRequester); - this.wasm = new WasmAPI(this.apiRequester); - this.ibcTransfer = new IbcTransferAPI(this.apiRequester); + this.auth = new AuthAPI(this); + this.bank = new BankAPI(this); + this.distribution = new DistributionAPI(this); + this.feeGrant = new FeeGrantAPI(this); + this.gov = new GovAPI(this); + this.market = new MarketAPI(this); + this.mint = new MintAPI(this); + this.authz = new AuthzAPI(this); + this.oracle = new OracleAPI(this); + this.slashing = new SlashingAPI(this); + this.staking = new StakingAPI(this); + this.tendermint = new TendermintAPI(this); + this.treasury = new TreasuryAPI(this); + this.wasm = new WasmAPI(this); + this.ibc = new IbcAPI(this); + this.ibcTransfer = new IbcTransferAPI(this); this.tx = new TxAPI(this); - this.utils = new LCDUtils(this); } diff --git a/src/client/lcd/LCDUtils.spec.ts b/src/client/lcd/LCDUtils.spec.ts index 82a50e7c9..efbc58079 100644 --- a/src/client/lcd/LCDUtils.spec.ts +++ b/src/client/lcd/LCDUtils.spec.ts @@ -4,16 +4,18 @@ import { Coin, Validator } from '../../core'; const lcdUtils = new LCDUtils( new LCDClient({ - chainID: 'bombay-12', - URL: 'https://bombay-lcd.terra.dev', + chainID: 'pisco-1', + URL: 'https://pisco-lcd.terra.dev', }) ); describe('LCDUtils', () => { it('calculateTax', async () => { - await expect( - lcdUtils.calculateTax(new Coin('uluna', '0.0')) - ).resolves.toBeInstanceOf(Coin); + if (lcdUtils.lcd.config.isClassic) { + await expect( + lcdUtils.calculateTax(new Coin('uluna', '0.0')) + ).resolves.toBeInstanceOf(Coin); + } }); it('validatorsWithVotingPower', async () => { diff --git a/src/client/lcd/Wallet.ts b/src/client/lcd/Wallet.ts index 0da56b249..af5a09d14 100644 --- a/src/client/lcd/Wallet.ts +++ b/src/client/lcd/Wallet.ts @@ -2,7 +2,8 @@ import { LCDClient } from './LCDClient'; import { Key } from '../../key'; import { CreateTxOptions } from '../lcd/api/TxAPI'; import { Tx } from '../../core/Tx'; -import { SignMode } from '@terra-money/terra.proto/cosmos/tx/signing/v1beta1/signing'; +import { SignMode as SignModeV1 } from '@terra-money/legacy.proto/cosmos/tx/signing/v1beta1/signing'; +import { SignMode as SignModeV2 } from '@terra-money/terra.proto/cosmos/tx/signing/v1beta1/signing'; export class Wallet { constructor(public lcd: LCDClient, public key: Key) {} @@ -52,7 +53,7 @@ export class Wallet { options: CreateTxOptions & { sequence?: number; accountNumber?: number; - signMode?: SignMode; + signMode?: SignModeV1 | SignModeV2; } ): Promise { let accountNumber = options.accountNumber; @@ -72,12 +73,20 @@ export class Wallet { options.sequence = sequence; options.accountNumber = accountNumber; - const tx = await this.createTx(options); - return this.key.signTx(tx, { - accountNumber, - sequence, - chainID: this.lcd.config.chainID, - signMode: options.signMode || SignMode.SIGN_MODE_DIRECT, - }); + const tx = await this.createTx(options); // don't need isClassic because lcd already have it + return this.key.signTx( + tx, + { + accountNumber, + sequence, + chainID: this.lcd.config.chainID, + signMode: + options.signMode || + (this.lcd.config.isClassic + ? SignModeV1.SIGN_MODE_DIRECT + : SignModeV2.SIGN_MODE_DIRECT), + }, + this.lcd.config.isClassic + ); } } diff --git a/src/client/lcd/api/AuthAPI.spec.ts b/src/client/lcd/api/AuthAPI.spec.ts index dddcdfbee..248bee03d 100644 --- a/src/client/lcd/api/AuthAPI.spec.ts +++ b/src/client/lcd/api/AuthAPI.spec.ts @@ -1,17 +1,20 @@ -import { APIRequester } from '../APIRequester'; import { AuthAPI } from './AuthAPI'; import { BaseAccount } from '../../../core'; import { MnemonicKey } from '../../../key'; +import { LCDClient } from '../LCDClient'; // TODO - restore to https://lcd.terra.dev -const c = new APIRequester('https://bombay-lcd.terra.dev/'); -const auth = new AuthAPI(c); +const terra = new LCDClient({ + chainID: 'pisco-1', + URL: 'https://pisco-lcd.terra.dev', +}); +const auth = new AuthAPI(terra); describe('AuthAPI', () => { describe('accounts', () => { it('account exists', async () => { const acct = await auth.accountInfo( - 'terra1fa0trn2nqjc2n6mmz9txta7ky5h5nnp9m6cra3' + 'terra1h8ljdmae7lx05kjj79c9ekscwsyjd3yr8wyvdn' ); expect(acct instanceof BaseAccount).toBe(true); diff --git a/src/client/lcd/api/AuthAPI.ts b/src/client/lcd/api/AuthAPI.ts index 0d79c3daf..484df0f88 100644 --- a/src/client/lcd/api/AuthAPI.ts +++ b/src/client/lcd/api/AuthAPI.ts @@ -2,15 +2,22 @@ import { AccAddress, Account, LazyGradedVestingAccount, + DelayedVestingAccount, + PeriodicVestingAccount, + ContinuousVestingAccount, BaseAccount, } from '../../../core'; import { BaseAPI } from './BaseAPI'; import { APIParams } from '../APIRequester'; +import { LCDClient } from '../LCDClient'; export class AuthAPI extends BaseAPI { + constructor(public lcd: LCDClient) { + super(lcd.apiRequester); + } /** * Looks up the account information using its Terra account address. If the account has - * vesting, it will be a [[LazyGradedVestingAccount]]. + * vesting, it will be one of [LazyGradedVestingAccount, DelayedVestingAccount, PeriodicVestingAccount, ContinuousVestingAccount] * * @param address address of account to look up */ @@ -19,8 +26,13 @@ export class AuthAPI extends BaseAPI { params: APIParams = {} ): Promise { const { account } = await this.c.get<{ - account: BaseAccount.Data | LazyGradedVestingAccount.Data; + account: + | BaseAccount.Data + | LazyGradedVestingAccount.Data + | DelayedVestingAccount.Data + | PeriodicVestingAccount.Data + | ContinuousVestingAccount.Data; }>(`/cosmos/auth/v1beta1/accounts/${address}`, params); - return Account.fromData(account); + return Account.fromData(account, this.lcd.config.isClassic); } } diff --git a/src/client/lcd/api/AuthzAPI.ts b/src/client/lcd/api/AuthzAPI.ts index 964eee74a..fcc168f3d 100644 --- a/src/client/lcd/api/AuthzAPI.ts +++ b/src/client/lcd/api/AuthzAPI.ts @@ -2,8 +2,13 @@ import { AccAddress } from '../../../core'; import { BaseAPI } from './BaseAPI'; import { AuthorizationGrant } from '../../../core/authz/authorizations'; import { APIParams, Pagination } from '../APIRequester'; +import { LCDClient } from '../LCDClient'; export class AuthzAPI extends BaseAPI { + constructor(public lcd: LCDClient) { + super(lcd.apiRequester); + } + /** * Get the message authorization grants for a specific granter and grantee */ @@ -25,6 +30,57 @@ export class AuthzAPI extends BaseAPI { params ) ) - .then(d => [d.grants.map(AuthorizationGrant.fromData), d.pagination]); + .then(d => [ + d.grants.map(grant => + AuthorizationGrant.fromData(grant, this.lcd.config.isClassic) + ), + d.pagination, + ]); + } + + /** + * get list of `GrantAuthorization`, granted by granter. + */ + public async granter( + granter: AccAddress, + params: APIParams = {} + ): Promise<[AuthorizationGrant[], Pagination]> { + if (this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + return this.c + .get<{ grants: AuthorizationGrant.Data[]; pagination: Pagination }>( + `/cosmos/authz/v1beta1/grants/granter/${granter}`, + params + ) + .then(d => [ + d.grants.map(g => + AuthorizationGrant.fromData(g, this.lcd.config.isClassic) + ), + d.pagination, + ]); + } + + /** + * get list of `GrantAuthorization`, by grantee. + */ + public async grantee( + grantee: AccAddress, + params: APIParams = {} + ): Promise<[AuthorizationGrant[], Pagination]> { + if (this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + return this.c + .get<{ grants: AuthorizationGrant.Data[]; pagination: Pagination }>( + `/cosmos/authz/v1beta1/grants/grantee/${grantee}`, + params + ) + .then(d => [ + d.grants.map(g => + AuthorizationGrant.fromData(g, this.lcd.config.isClassic) + ), + d.pagination, + ]); } } diff --git a/src/client/lcd/api/BankAPI.spec.ts b/src/client/lcd/api/BankAPI.spec.ts index 931ec8f64..03ff10764 100644 --- a/src/client/lcd/api/BankAPI.spec.ts +++ b/src/client/lcd/api/BankAPI.spec.ts @@ -1,13 +1,16 @@ -import { APIRequester } from '../APIRequester'; +import { LCDClient } from '../LCDClient'; import { BankAPI } from './BankAPI'; -const c = new APIRequester('https://bombay-lcd.terra.dev/'); -const bank = new BankAPI(c); +const terra = new LCDClient({ + chainID: 'pisco-1', + URL: 'https://pisco-lcd.terra.dev', +}); +const bank = new BankAPI(terra); describe('BankAPI', () => { describe('balance', () => { it('account exists', async () => { - await bank.balance('terra1ax7xtll5v6u6vdnymxa4k4648w80zhkggl0u24'); + await bank.balance('terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v'); }); it('invalid account', async () => { diff --git a/src/client/lcd/api/BankAPI.ts b/src/client/lcd/api/BankAPI.ts index 2bf8fad0b..794128313 100644 --- a/src/client/lcd/api/BankAPI.ts +++ b/src/client/lcd/api/BankAPI.ts @@ -1,8 +1,13 @@ import { BaseAPI } from './BaseAPI'; import { Coins, AccAddress } from '../../../core'; import { APIParams, Pagination, PaginationOptions } from '../APIRequester'; +import { LCDClient } from '../LCDClient'; export class BankAPI extends BaseAPI { + constructor(public lcd: LCDClient) { + super(lcd.apiRequester); + } + /** * Look up the balance of an account by its address. * @param address address of account to look up. @@ -32,4 +37,23 @@ export class BankAPI extends BaseAPI { ) .then(d => [Coins.fromData(d.supply), d.pagination]); } + + /** + * Lqueries the spenable balance of all coins for a single account. + * @param address address of account to look up. + */ + public async spendableBalances( + address: AccAddress, + params: Partial = {} + ): Promise<[Coins, Pagination]> { + if (this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + return this.c + .get<{ + balances: Coins.Data; + pagination: Pagination; + }>(`/cosmos/bank/v1beta1/spendable_balances/${address}`, params) + .then(d => [Coins.fromData(d.balances), d.pagination]); + } } diff --git a/src/client/lcd/api/DistributionAPI.spec.ts b/src/client/lcd/api/DistributionAPI.spec.ts index 61c88ab7f..63627e4c2 100644 --- a/src/client/lcd/api/DistributionAPI.spec.ts +++ b/src/client/lcd/api/DistributionAPI.spec.ts @@ -1,11 +1,90 @@ -import { APIRequester } from '../APIRequester'; -import { DistributionAPI } from './DistributionAPI'; +import { DistributionAPI, Rewards } from './DistributionAPI'; -import { Dec } from '../../../core'; +import { + Dec, + MsgFundCommunityPool, + MsgSetWithdrawAddress, + MsgWithdrawDelegatorReward, + MsgWithdrawValidatorCommission, + Coin, + Coins, +} from '../../../core'; +import { LocalTerra } from '../../LocalTerra'; -const c = new APIRequester('https://bombay-lcd.terra.dev/'); -const distribution = new DistributionAPI(c); +const terra = new LocalTerra(); +const distribution = new DistributionAPI(terra); +const delegatorWallet = terra.wallets.test1; +const depositorWallet = terra.wallets.test2; +const withdrawerWallet = terra.wallets.test1; +const validatorWallet = terra.wallets.validator; + +async function FundCommunityPool() { + const msgFundCommunityPool = new MsgFundCommunityPool( + depositorWallet.key.accAddress, + new Coins([new Coin('uluna', 100)]) + ); + depositorWallet + .createAndSignTx({ + msgs: [msgFundCommunityPool], + memo: 'msgFundCommunityPool', + }) + .then(tx => { + return terra.tx.broadcast(tx); + }); +} + +async function SetWithdrawAddress() { + const msgSetWithdrawAddress = new MsgSetWithdrawAddress( + delegatorWallet.key.accAddress, + withdrawerWallet.key.accAddress + ); + delegatorWallet + .createAndSignTx({ + msgs: [msgSetWithdrawAddress], + memo: 'msgSetWithdrawAddress', + }) + .then(tx => { + return terra.tx.broadcast(tx); + }); +} + +async function WithdrawDelegatorReward() { + const msgWithdrawDelegatorReward = new MsgWithdrawDelegatorReward( + delegatorWallet.key.accAddress, + validatorWallet.key.valAddress + ); + + delegatorWallet + .createAndSignTx({ + msgs: [msgWithdrawDelegatorReward], + memo: 'msgWithdrawDelegatorReward', + }) + .then(tx => { + return terra.tx.broadcast(tx); + }); +} + +async function WithdrawValidatorCommission() { + const msgWithdrawValidatorCommission = new MsgWithdrawValidatorCommission( + validatorWallet.key.valAddress + ); + validatorWallet + .createAndSignTx({ + msgs: [msgWithdrawValidatorCommission], + memo: 'msgWithdrawValidatorCommission', + }) + .then(tx => { + return terra.tx.broadcast(tx); + }); +} +function distributionForTest() { + FundCommunityPool(); + SetWithdrawAddress(); + WithdrawDelegatorReward(); + WithdrawValidatorCommission(); +} +// distributionForTest() describe('DistributionAPI', () => { it('parameters', async () => { await expect(distribution.parameters()).resolves.toMatchObject({ @@ -15,4 +94,29 @@ describe('DistributionAPI', () => { withdraw_addr_enabled: expect.any(Boolean), }); }); + + it('rewards', async () => { + await expect( + distribution.rewards(delegatorWallet.key.accAddress) + ).resolves.toMatchObject({ + rewards: expect.anything(), + total: expect.any(Coins), + }); + }); + + // it('validatorCommission', async ()=>{ + // await expect(distribution.validatorCommission(validatorWallet.key.valAddress)).resolves.toEqual(expect.any(Coins)) + // }) + + it('withdrawAddress', async () => { + await expect( + distribution.withdrawAddress(delegatorWallet.key.accAddress) + ).resolves.toEqual(withdrawerWallet.key.accAddress); + }); + + it('communityPool', async () => { + await expect(distribution.communityPool()).resolves.toEqual( + expect.any(Coins) + ); + }); }); diff --git a/src/client/lcd/api/DistributionAPI.ts b/src/client/lcd/api/DistributionAPI.ts index 7aab9fcf0..9c8606a7a 100644 --- a/src/client/lcd/api/DistributionAPI.ts +++ b/src/client/lcd/api/DistributionAPI.ts @@ -1,6 +1,7 @@ import { BaseAPI } from './BaseAPI'; import { Coins, AccAddress, Dec, ValAddress } from '../../../core'; import { APIParams } from '../APIRequester'; +import { LCDClient } from '../LCDClient'; export interface DistributionParams { /** @@ -61,6 +62,11 @@ export namespace Rewards { } export class DistributionAPI extends BaseAPI { + + constructor(public lcd: LCDClient) { + super(lcd.apiRequester); + } + /** * Gets a delegator's rewards. * @param delegator delegator's account address diff --git a/src/client/lcd/api/FeeGrantAPI.spec.ts b/src/client/lcd/api/FeeGrantAPI.spec.ts index f7c36b304..4ca706d23 100644 --- a/src/client/lcd/api/FeeGrantAPI.spec.ts +++ b/src/client/lcd/api/FeeGrantAPI.spec.ts @@ -1,8 +1,12 @@ import { APIRequester } from '../APIRequester'; +import { LCDClient } from '../LCDClient'; import { FeeGrantAPI } from './FeeGrantAPI'; -const c = new APIRequester('https://bombay-lcd.terra.dev/'); -const feeGrant = new FeeGrantAPI(c); +const terra = new LCDClient({ + chainID: 'pisco-1', + URL: 'https://pisco-lcd.terra.dev', +}); +const feeGrant = new FeeGrantAPI(terra); describe('FeeGrantAPI', () => { it('allowances', async () => { diff --git a/src/client/lcd/api/FeeGrantAPI.ts b/src/client/lcd/api/FeeGrantAPI.ts index d038a673b..62a2c5289 100644 --- a/src/client/lcd/api/FeeGrantAPI.ts +++ b/src/client/lcd/api/FeeGrantAPI.ts @@ -2,8 +2,14 @@ import { AccAddress } from '../../../core'; import { BaseAPI } from './BaseAPI'; import { Allowance } from '../../../core/feegrant/allowances'; import { Pagination, PaginationOptions } from '../APIRequester'; +import { LCDClient } from '../LCDClient'; export class FeeGrantAPI extends BaseAPI { + + constructor(public lcd: LCDClient) { + super(lcd.apiRequester); + } + public async allowances( grantee: AccAddress, params: Partial = {} diff --git a/src/client/lcd/api/GovAPI.spec.ts b/src/client/lcd/api/GovAPI.spec.ts index 25628c47e..f090ad2fa 100644 --- a/src/client/lcd/api/GovAPI.spec.ts +++ b/src/client/lcd/api/GovAPI.spec.ts @@ -1,9 +1,10 @@ -import { APIRequester } from '../APIRequester'; import { GovAPI } from './GovAPI'; -import { Coins, Dec, Int } from '../../../core'; +import { Coins, Dec, Int, Proposal } from '../../../core'; +import { LocalTerra } from '../../LocalTerra'; +import { Deposit } from '@terra-money/terra.proto/cosmos/gov/v1beta1/gov'; -const c = new APIRequester('https://bombay-lcd.terra.dev/'); -const gov = new GovAPI(c); +const terra = new LocalTerra(); +const gov = new GovAPI(terra); describe('GovAPI', () => { it('parameters', async () => { @@ -24,11 +25,44 @@ describe('GovAPI', () => { }); it('tally', async () => { - await expect(gov.tally(5333)).resolves.toMatchObject({ + const proposalId = await gov.proposals().then(v => v[0][0].id) + await expect(gov.tally(proposalId)).resolves.toMatchObject({ yes: expect.any(Int), abstain: expect.any(Int), no: expect.any(Int), no_with_veto: expect.any(Int), }); }); + + it('proposals', async () => { + const proposals = await gov.proposals().then(v => v[0]) + expect(proposals).toContainEqual(expect.any(Proposal)); + }); + + it('proposal', async () => { + const proposalId = await gov.proposals().then(v => v[0][0].id) + const proposal = await gov.proposal(proposalId); + expect(proposal).toEqual(expect.any(Proposal)); + }); + + it('proposer', async () => { + const proposalId = await gov.proposals().then(v => v[0][0].id) + const proposer = await gov.proposer(proposalId); + expect(proposer).toEqual(expect.any(String)); + }); + + it('initialDeposit', async () => { + const proposalId = await gov.proposals().then(v => v[0][0].id) + const initialDeposit = await gov.initialDeposit(proposalId); + expect(initialDeposit).toEqual(expect.any(Coins)); + }); + + it('deposits', async () => { + const proposals = await gov.proposals().then(v => v[0]) + const proposalId = proposals[0].id; + const deposits = await gov.deposits(proposalId).then(v => v[0][0]); + if (deposits !== undefined) { + expect(deposits).toEqual(expect.any(Deposit)); + } + }); }); diff --git a/src/client/lcd/api/GovAPI.ts b/src/client/lcd/api/GovAPI.ts index 2d8804341..2287c76d5 100644 --- a/src/client/lcd/api/GovAPI.ts +++ b/src/client/lcd/api/GovAPI.ts @@ -13,7 +13,8 @@ import { import { APIParams, Pagination, PaginationOptions } from '../APIRequester'; import { TxSearchResult } from './TxAPI'; -import { ProposalStatus } from '@terra-money/terra.proto/cosmos/gov/v1beta1/gov'; +import { ProposalStatus } from '@terra-money/legacy.proto/cosmos/gov/v1beta1/gov'; +import { LCDClient } from '../LCDClient'; export interface GovParams { /** @@ -102,6 +103,10 @@ export namespace Tally { } export class GovAPI extends BaseAPI { + constructor(public lcd: LCDClient) { + super(lcd.apiRequester); + } + /** * Gets all proposals. */ @@ -113,7 +118,12 @@ export class GovAPI extends BaseAPI { proposals: Proposal.Data[]; pagination: Pagination; }>(`/cosmos/gov/v1beta1/proposals`, params) - .then(d => [d.proposals.map(Proposal.fromData), d.pagination]); + .then(d => [ + d.proposals.map(prop => + Proposal.fromData(prop, this.lcd.config.isClassic) + ), + d.pagination, + ]); } /** @@ -129,7 +139,7 @@ export class GovAPI extends BaseAPI { `/cosmos/gov/v1beta1/proposals/${proposalId}`, params ) - .then(d => Proposal.fromData(d.proposal)); + .then(d => Proposal.fromData(d.proposal, this.lcd.config.isClassic)); } /** @@ -137,6 +147,7 @@ export class GovAPI extends BaseAPI { * @param proposalId proposal's ID */ public async proposer(proposalId: number): Promise { + proposalId; const creationTx = await this.searchProposalCreationTx(proposalId); const msg = creationTx.body.messages.find( msg => msg['@type'] === '/cosmos.gov.v1beta1.MsgSubmitProposal' @@ -154,6 +165,7 @@ export class GovAPI extends BaseAPI { * @param proposalId proposal's ID */ public async initialDeposit(proposalId: number): Promise { + proposalId; const creationTx = await this.searchProposalCreationTx(proposalId); const msg = creationTx.body.messages.find( msg => msg['@type'] === '/cosmos.gov.v1beta1.MsgSubmitProposal' @@ -174,6 +186,8 @@ export class GovAPI extends BaseAPI { proposalId: number, _params: Partial = {} ): Promise<[Deposit[], Pagination]> { + proposalId; + _params; const proposal = await this.proposal(proposalId); if ( proposal.status === ProposalStatus.PROPOSAL_STATUS_DEPOSIT_PERIOD || @@ -238,7 +252,6 @@ export class GovAPI extends BaseAPI { if (d.tx_responses.length === 0) { throw Error('failed to fetch submit_proposer tx'); } - return d.txs[0]; }); } @@ -251,6 +264,8 @@ export class GovAPI extends BaseAPI { proposalId: number, _params: Partial = {} ): Promise<[Vote[], Pagination]> { + proposalId; + _params; const proposal = await this.proposal(proposalId); if (proposal.status === ProposalStatus.PROPOSAL_STATUS_DEPOSIT_PERIOD) { return this.c @@ -302,6 +317,7 @@ export class GovAPI extends BaseAPI { return [votes, d.pagination]; }); + throw Error('temp error: remove me'); } /** diff --git a/src/client/lcd/api/IbcAPI.spec.ts b/src/client/lcd/api/IbcAPI.spec.ts index e774b238e..a0373ae37 100644 --- a/src/client/lcd/api/IbcAPI.spec.ts +++ b/src/client/lcd/api/IbcAPI.spec.ts @@ -1,9 +1,11 @@ -import { APIRequester } from '../APIRequester'; -import { IbcClientAPI } from './IbcAPI'; +import { LCDClient } from '../LCDClient'; +import { IbcAPI } from './IbcAPI'; -const c = new APIRequester('https://bombay-lcd.terra.dev/'); -//const c = new APIRequester('http://localhost:1317/'); -const ibc = new IbcClientAPI(c); +const terra = new LCDClient({ + chainID: 'pisco-1', + URL: 'https://pisco-lcd.terra.dev', +}); +const ibc = new IbcAPI(terra); describe('IbcClientAPI', () => { it('params', async () => { diff --git a/src/client/lcd/api/IbcAPI.ts b/src/client/lcd/api/IbcAPI.ts index b269cfb45..9cfc993f5 100644 --- a/src/client/lcd/api/IbcAPI.ts +++ b/src/client/lcd/api/IbcAPI.ts @@ -2,7 +2,9 @@ import { BaseAPI } from './BaseAPI'; import { APIParams, Pagination, PaginationOptions } from '../APIRequester'; import { IdentifiedClientState } from '../../../core/ibc/msgs/client/IdentifiedClient'; import { ClientConsensusStates } from '../../../core/ibc/msgs/client/ClientConsensusStates'; - +import { LCDClient } from '../LCDClient'; +import { Params as ControllerParams } from '../../../core/ibc/applications/interchain-account/controller/Params'; +import { Params as HostParams } from '../../../core/ibc/applications/interchain-account/host/Params'; export interface IbcClientParams { allowed_clients: string[]; } @@ -23,7 +25,12 @@ export namespace Status { } } -export class IbcClientAPI extends BaseAPI { +export class IbcAPI extends BaseAPI { + + constructor(public lcd: LCDClient) { + super(lcd.apiRequester); + } + /** * Gets the current transfer application parameters. */ @@ -82,4 +89,25 @@ export class IbcClientAPI extends BaseAPI { }>(`/ibc/core/client/v1/consensus_states/${client_id}`, params) .then(); } + /** + * Gets paramaters for interchain account controller. + */ + public async interchainAccountControllerParameters(params: APIParams = {}): Promise { + return this.c + .get<{ params: ControllerParams.Data }>(`/ibc/apps/interchain_accounts/controller/v1/params`, params) + .then(({ params: d }) => ( + ControllerParams.fromData(d) + )); + } + + /** + * Gets paramaters for interchain account host. + */ + public async interchainAccountHostParameters(params: APIParams = {}): Promise { + return this.c + .get<{ params: HostParams.Data }>(`/ibc/apps/interchain_accounts/host/v1/params`, params) + .then(({ params: d }) => ( + HostParams.fromData(d) + )); + } } diff --git a/src/client/lcd/api/IbcTransferAPI.spec.ts b/src/client/lcd/api/IbcTransferAPI.spec.ts index 8e914bdd9..d60050fcb 100644 --- a/src/client/lcd/api/IbcTransferAPI.spec.ts +++ b/src/client/lcd/api/IbcTransferAPI.spec.ts @@ -1,9 +1,12 @@ -import { APIRequester } from '../APIRequester'; import { IbcTransferAPI } from './IbcTransferAPI'; -import { DenomTrace } from '../../../core/ibc-transfer/DenomTrace'; +import { DenomTrace } from '../../../core/ibc/applications/transfer/v1/DenomTrace'; +import { LCDClient } from '../LCDClient'; -const c = new APIRequester('https://bombay-lcd.terra.dev/'); -const ibctx = new IbcTransferAPI(c); +const terra = new LCDClient({ + chainID: 'pisco-1', + URL: 'https://pisco-lcd.terra.dev/', +}); +const ibctx = new IbcTransferAPI(terra); describe('IbcTransferAPI', () => { it('denomTraces', async () => { diff --git a/src/client/lcd/api/IbcTransferAPI.ts b/src/client/lcd/api/IbcTransferAPI.ts index 3cbabf4a4..8c95fae96 100644 --- a/src/client/lcd/api/IbcTransferAPI.ts +++ b/src/client/lcd/api/IbcTransferAPI.ts @@ -1,7 +1,8 @@ import { BaseAPI } from './BaseAPI'; import { APIParams, Pagination, PaginationOptions } from '../APIRequester'; -//import { DenomTrace } from '@terra-money/terra.proto/ibc/applications/transfer/v1/query' -import { DenomTrace } from '../../../core/ibc-transfer/DenomTrace'; +//import { DenomTrace } from '@terra-money/legacy.proto/ibc/applications/transfer/v1/query' +import { DenomTrace } from '../../../core/ibc/applications/transfer/v1/DenomTrace'; +import { LCDClient } from '../LCDClient'; export interface IbcTransferParams { send_enabled: boolean; @@ -16,6 +17,10 @@ export namespace IbcTransferParams { } export class IbcTransferAPI extends BaseAPI { + constructor(public lcd: LCDClient) { + super(lcd.apiRequester); + } + /** Gets a denomTrace for the hash */ public async denomTrace(hash: string): Promise { return this.c @@ -37,13 +42,20 @@ export class IbcTransferAPI extends BaseAPI { .then(d => [d.denom_traces.map(DenomTrace.fromData), d.pagination]); } - /* not supoorted - public async escrowAddress( - port: string, - channelId: string - ): Promise<[Coins, Pagination]> { + /** Gets a denomination hash information */ + public async denomHash( + trace: string, + params: Partial = {} + ): Promise { + if (this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); } - */ + + return await this.c.get( + `/ibc/apps/transfer/v1/denom_hashes/${trace}`, + params + ); + } /** * Gets the current transfer application parameters. diff --git a/src/client/lcd/api/MarketAPI.spec.ts b/src/client/lcd/api/MarketAPI.spec.ts index dd6ccee56..1fd6cdbd8 100644 --- a/src/client/lcd/api/MarketAPI.spec.ts +++ b/src/client/lcd/api/MarketAPI.spec.ts @@ -1,16 +1,22 @@ -import { APIRequester } from '../APIRequester'; import { MarketAPI } from './MarketAPI'; import { Dec } from '../../../core/numeric'; +import { LCDClient } from '../LCDClient'; -const c = new APIRequester('https://bombay-lcd.terra.dev/'); -const market = new MarketAPI(c); +const terra = new LCDClient({ + chainID: 'pisco-1', + URL: 'https://pisco-lcd.terra.dev/', +}); +const market = new MarketAPI(terra); describe('MarketAPI', () => { it('parameters', async () => { - await expect(market.parameters()).resolves.toMatchObject({ - pool_recovery_period: expect.any(Number), - base_pool: expect.any(Dec), - min_stability_spread: expect.any(Dec), - }); + if (terra.config.isClassic) { + // only classic network has param query + await expect(market.parameters()).resolves.toMatchObject({ + pool_recovery_period: expect.any(Number), + base_pool: expect.any(Dec), + min_stability_spread: expect.any(Dec), + }); + } }); }); diff --git a/src/client/lcd/api/MarketAPI.ts b/src/client/lcd/api/MarketAPI.ts index e2ecc06af..b0ba36386 100644 --- a/src/client/lcd/api/MarketAPI.ts +++ b/src/client/lcd/api/MarketAPI.ts @@ -1,5 +1,6 @@ import { Coin, Dec, Numeric, Denom } from '../../../core'; import { APIParams } from '../APIRequester'; +import { LCDClient } from '../LCDClient'; import { BaseAPI } from './BaseAPI'; export interface MarketParams { @@ -24,6 +25,10 @@ export namespace MarketParams { } export class MarketAPI extends BaseAPI { + constructor(public lcd: LCDClient) { + super(lcd.apiRequester); + } + /** * Gets the Market's swap rate for a given coin to a requested denomination. * @param offerCoin coin to convert @@ -34,6 +39,10 @@ export class MarketAPI extends BaseAPI { askDenom: Denom, _params: APIParams = {} ): Promise { + if (!this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + const params = { ..._params, offer_coin: offerCoin.toString(), @@ -49,6 +58,10 @@ export class MarketAPI extends BaseAPI { * Gets current value of the pool delta, which is used to determine Terra<>Luna swap rates. */ public async poolDelta(params: APIParams = {}): Promise { + if (!this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + return this.c .get<{ terra_pool_delta: Numeric.Input }>( `/terra/market/v1beta1/terra_pool_delta`, @@ -61,6 +74,10 @@ export class MarketAPI extends BaseAPI { * Gets the current Market module's parameters. */ public async parameters(params: APIParams = {}): Promise { + if (!this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + return this.c .get<{ params: MarketParams.Data }>( `/terra/market/v1beta1/params`, diff --git a/src/client/lcd/api/MintAPI.spec.ts b/src/client/lcd/api/MintAPI.spec.ts index 00ae51933..2f89a0390 100644 --- a/src/client/lcd/api/MintAPI.spec.ts +++ b/src/client/lcd/api/MintAPI.spec.ts @@ -1,9 +1,12 @@ import { Dec } from '../../../core/numeric'; -import { APIRequester } from '../APIRequester'; +import { LCDClient } from '../LCDClient'; import { MintAPI } from './MintAPI'; -const c = new APIRequester('https://bombay-lcd.terra.dev/'); -const api = new MintAPI(c); +const terra = new LCDClient({ + chainID: 'pisco-1', + URL: 'https://pisco-lcd.terra.dev', +}); +const api = new MintAPI(terra); describe('MintAPI', () => { it('inflation', async () => { diff --git a/src/client/lcd/api/MintAPI.ts b/src/client/lcd/api/MintAPI.ts index 1d00cdead..f31fc8d27 100644 --- a/src/client/lcd/api/MintAPI.ts +++ b/src/client/lcd/api/MintAPI.ts @@ -1,5 +1,6 @@ import { Dec, Numeric, Denom } from '../../../core'; import { APIParams } from '../APIRequester'; +import { LCDClient } from '../LCDClient'; import { BaseAPI } from './BaseAPI'; export interface MintingParams { @@ -23,6 +24,11 @@ export namespace MintingParams { } export class MintAPI extends BaseAPI { + + constructor(public lcd: LCDClient) { + super(lcd.apiRequester); + } + /** * Gets the current minting inflation value */ diff --git a/src/client/lcd/api/OracleAPI.spec.ts b/src/client/lcd/api/OracleAPI.spec.ts index 4e1d9cd1a..57289fa46 100644 --- a/src/client/lcd/api/OracleAPI.spec.ts +++ b/src/client/lcd/api/OracleAPI.spec.ts @@ -1,24 +1,30 @@ -import { APIRequester } from '../APIRequester'; import { OracleAPI } from './OracleAPI'; import { Dec } from '../../../core/numeric'; +import { LCDClient } from '../LCDClient'; -const c = new APIRequester('https://bombay-lcd.terra.dev/'); -const oracle = new OracleAPI(c); +const terra = new LCDClient({ + chainID: 'pisco-1', + URL: 'https://pisco-lcd.terra.dev/', +}); +const oracle = new OracleAPI(terra); describe('OracleAPI', () => { it('parameters', async () => { - await expect(oracle.parameters()).resolves.toMatchObject({ - vote_period: expect.any(Number), - vote_threshold: expect.any(Dec), - reward_band: expect.any(Dec), - reward_distribution_window: expect.any(Number), - whitelist: expect.any(Array), - slash_fraction: expect.any(Dec), - slash_window: expect.any(Number), - min_valid_per_window: expect.any(Dec), - }); + if (terra.config.isClassic) { + // only classic network has param query + await expect(oracle.parameters()).resolves.toMatchObject({ + vote_period: expect.any(Number), + vote_threshold: expect.any(Dec), + reward_band: expect.any(Dec), + reward_distribution_window: expect.any(Number), + whitelist: expect.any(Array), + slash_fraction: expect.any(Dec), + slash_window: expect.any(Number), + min_valid_per_window: expect.any(Dec), + }); - const params = await oracle.parameters(); - expect(params.whitelist[0].tobin_tax).toEqual(expect.any(Dec)); + const params = await oracle.parameters(); + expect(params.whitelist[0].tobin_tax).toEqual(expect.any(Dec)); + } }); }); diff --git a/src/client/lcd/api/OracleAPI.ts b/src/client/lcd/api/OracleAPI.ts index a020f9c9a..f9578ada7 100644 --- a/src/client/lcd/api/OracleAPI.ts +++ b/src/client/lcd/api/OracleAPI.ts @@ -10,6 +10,7 @@ import { AggregateExchangeRateVote, } from '../../../core'; import { APIParams } from '../APIRequester'; +import { LCDClient } from '../LCDClient'; export interface OracleWhitelist { name: string; @@ -77,10 +78,18 @@ export namespace OracleWhitelist { } export class OracleAPI extends BaseAPI { + constructor(public lcd: LCDClient) { + super(lcd.apiRequester); + } + /** * Gets the Oracle module's currently registered exchange rate for uluna in all available denominations. */ public async exchangeRates(params: APIParams = {}): Promise { + if (!this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + return this.c .get<{ exchange_rates: Coins.Data }>( `/terra/oracle/v1beta1/denoms/exchange_rates`, @@ -97,6 +106,10 @@ export class OracleAPI extends BaseAPI { denom: Denom, params: APIParams = {} ): Promise { + if (!this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + return this.c .get<{ exchange_rate: string }>( `/terra/oracle/v1beta1/denoms/${denom}/exchange_rate`, @@ -114,6 +127,10 @@ export class OracleAPI extends BaseAPI { * Gets the current list of active denominations. */ public async activeDenoms(params: APIParams = {}): Promise { + if (!this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + return this.c .get<{ actives: Denom[] }>(`/terra/oracle/v1beta1/denoms/actives`, params) .then(d => d.actives); @@ -128,6 +145,10 @@ export class OracleAPI extends BaseAPI { validator: ValAddress, params: APIParams = {} ): Promise { + if (!this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + return this.c .get<{ feeder_addr: AccAddress }>( `/terra/oracle/v1beta1/validators/${validator}/feeder`, @@ -144,6 +165,10 @@ export class OracleAPI extends BaseAPI { validator: ValAddress, params: APIParams = {} ): Promise { + if (!this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + return this.c .get<{ miss_counter: string }>( `/terra/oracle/v1beta1/validators/${validator}/miss`, @@ -160,6 +185,10 @@ export class OracleAPI extends BaseAPI { validator: ValAddress, params: APIParams = {} ): Promise { + if (!this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + return this.c .get<{ aggregate_prevote: AggregateExchangeRatePrevote.Data }>( `/terra/oracle/v1beta1/validators/${validator}/aggregate_prevote`, @@ -176,6 +205,10 @@ export class OracleAPI extends BaseAPI { validator: ValAddress, params: APIParams = {} ): Promise { + if (!this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + return this.c .get<{ aggregate_vote: AggregateExchangeRateVote.Data }>( `/terra/oracle/v1beta1/validators/${validator}/aggregate_vote`, @@ -188,6 +221,10 @@ export class OracleAPI extends BaseAPI { * Gets the current Oracle module's parameters. */ public async parameters(params: APIParams = {}): Promise { + if (!this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + return this.c .get<{ params: OracleParams.Data }>( `/terra/oracle/v1beta1/params`, diff --git a/src/client/lcd/api/SlashingAPI.spec.ts b/src/client/lcd/api/SlashingAPI.spec.ts index 14b202092..e1bbbb737 100644 --- a/src/client/lcd/api/SlashingAPI.spec.ts +++ b/src/client/lcd/api/SlashingAPI.spec.ts @@ -1,9 +1,12 @@ -import { APIRequester } from '../APIRequester'; import { SlashingAPI } from './SlashingAPI'; import { Dec } from '../../../core/numeric'; +import { LCDClient } from '../LCDClient'; -const c = new APIRequester('https://bombay-lcd.terra.dev/'); -const slashing = new SlashingAPI(c); +const terra = new LCDClient({ + chainID: 'pisco-1', + URL: 'https://pisco-lcd.terra.dev', +}); +const slashing = new SlashingAPI(terra); describe('SlashingAPI', () => { it('parameters', async () => { diff --git a/src/client/lcd/api/SlashingAPI.ts b/src/client/lcd/api/SlashingAPI.ts index 626095bf2..0b882fbe8 100644 --- a/src/client/lcd/api/SlashingAPI.ts +++ b/src/client/lcd/api/SlashingAPI.ts @@ -1,6 +1,7 @@ import { BaseAPI } from './BaseAPI'; import { Dec, ValConsAddress } from '../../../core'; import { APIParams, Pagination } from '../APIRequester'; +import { LCDClient } from '../LCDClient'; export interface SlashingParams { /** Number of blocks over which missed blocks are tallied for downtime. */ @@ -61,6 +62,11 @@ export namespace SigningInfo { } export class SlashingAPI extends BaseAPI { + + constructor(public lcd: LCDClient) { + super(lcd.apiRequester); + } + /** * Gets all signing info, or just the signing info of a particular validator. * diff --git a/src/client/lcd/api/StakingAPI.spec.ts b/src/client/lcd/api/StakingAPI.spec.ts index 0f90893b7..c05d3b86c 100644 --- a/src/client/lcd/api/StakingAPI.spec.ts +++ b/src/client/lcd/api/StakingAPI.spec.ts @@ -1,15 +1,18 @@ -import { APIRequester } from '../APIRequester'; import { StakingAPI } from './StakingAPI'; import { Dec, Int } from '../../../core/numeric'; import { Coin } from '../../../core/Coin'; import { ValConsPublicKey, Delegation, - UnbondingDelegation, + // UnbondingDelegation, + MsgDelegate, + MsgUndelegate, + // MsgBeginRedelegate, } from '../../../core'; +import { LocalTerra } from '../../../../src'; -const c = new APIRequester('https://bombay-lcd.terra.dev/'); -const staking = new StakingAPI(c); +const terra = new LocalTerra(); +const staking = new StakingAPI(terra); const checkDelegations = (delegations: Delegation[]) => { expect(delegations).toContainEqual({ @@ -20,22 +23,71 @@ const checkDelegations = (delegations: Delegation[]) => { }); }; -const checkUnbondings = (unbondings: UnbondingDelegation[]) => { - expect(unbondings).toContainEqual({ - delegator_address: expect.any(String), - validator_address: expect.any(String), - entries: expect.arrayContaining([ - { - initial_balance: expect.any(Int), - balance: expect.any(Int), - creation_height: expect.any(Number), - completion_time: expect.any(Date), - }, - ]), - }); -}; +// const checkUnbondings = (unbondings: UnbondingDelegation[]) => { +// expect(unbondings).toContainEqual({ +// delegator_address: expect.any(String), +// validator_address: expect.any(String), +// entries: expect.arrayContaining([ +// { +// initial_balance: expect.any(Int), +// balance: expect.any(Int), +// creation_height: expect.any(Number), +// completion_time: expect.any(Date), +// }, +// ]), +// }); +// }; + +const delegator = terra.wallets.test1.key.accAddress; +const validator = terra.wallets.validator.key.valAddress; +const delegatorWallet = terra.wallets.test1; + +async function stakingForTest() { + const delegateMsg = new MsgDelegate( + delegator, + validator, + new Coin('uluna', 100) + ); + const unDelegateMsg = new MsgUndelegate( + delegator, + validator, + new Coin('uluna', 10) + ); + // ToDo : Add different validators + //const reDelegateMsg = new MsgBeginRedelegate(delegator,validator1,validator2, new Coin("uluna",10)) + + delegatorWallet + .createAndSignTx({ + msgs: [delegateMsg], + memo: 'staking', + }) + .then(tx => { + return terra.tx.broadcast(tx); + }); + + delegatorWallet + .createAndSignTx({ + msgs: [unDelegateMsg], + memo: 'staking', + }) + .then(tx => { + return terra.tx.broadcast(tx); + }); + + // delegatorWallet.createAndSignTx({ + // msgs:[reDelegateMsg], + // memo: 'staking' + // }) + // .then(tx =>{ + // return terra.tx.broadcast(tx) + // }) + // .then(result =>{ + // console.log(`ReDelegate TX hash: ${result.txhash} ${result.raw_log}`); + // }) +} describe('StakingAPI', () => { + // stakingForTest(); it('parameters', async () => { await expect(staking.parameters()).resolves.toMatchObject({ unbonding_time: expect.any(Number), @@ -45,22 +97,16 @@ describe('StakingAPI', () => { bond_denom: expect.any(String), }); }); - it('delegations (delegator & validator)', async () => { const delegations = await staking - .delegations( - 'terra1rk6tvacasnnyssfnn00zl7wz43pjnpn7vayqv6', - 'terravaloper1vk20anceu6h9s00d27pjlvslz3avetkvnwmr35' - ) + .delegations(delegator, validator) .then(v => v[0]); checkDelegations(delegations); }); it('delegations (delegator)', async () => { - const delegations = await staking - .delegations('terra1rk6tvacasnnyssfnn00zl7wz43pjnpn7vayqv6') - .then(v => v[0]); + const delegations = await staking.delegations(delegator).then(v => v[0]); checkDelegations(delegations); }); @@ -69,7 +115,7 @@ describe('StakingAPI', () => { const delegations = await staking .delegations( undefined, - 'terravaloper1vk20anceu6h9s00d27pjlvslz3avetkvnwmr35' // node0 + validator // node0 ) .then(v => v[0]); @@ -80,59 +126,58 @@ describe('StakingAPI', () => { await expect(staking.delegations()).rejects.toThrowError(); }); - it('redelegations', async () => { - const redelegations = await staking - .redelegations('terra1rk6tvacasnnyssfnn00zl7wz43pjnpn7vayqv6') // manual faucet - .then(v => v[0]); - - expect(redelegations).toContainEqual({ - delegator_address: expect.any(String), - validator_src_address: expect.any(String), - validator_dst_address: expect.any(String), - entries: expect.arrayContaining([ - { - initial_balance: expect.any(Int), - balance: expect.any(Int), - shares_dst: expect.any(Dec), - creation_height: expect.any(Number), - completion_time: expect.any(Date), - }, - ]), - }); - }); - - it('unbondingDelegations (delegator & validator)', async () => { - const unbondings = await staking - .unbondingDelegations( - 'terra1rk6tvacasnnyssfnn00zl7wz43pjnpn7vayqv6', // manual faucet - 'terravaloper1vk20anceu6h9s00d27pjlvslz3avetkvnwmr35' // node0 - ) - .then(v => v[0]); - - checkUnbondings(unbondings); - }); - - it('unbondingDelegations (delegator)', async () => { - const unbondings = await staking - .unbondingDelegations( - 'terra1rk6tvacasnnyssfnn00zl7wz43pjnpn7vayqv6', - undefined - ) - .then(v => v[0]); - - checkUnbondings(unbondings); - }); - - it('unbondingDelegations (validator)', async () => { - const unbondings = await staking - .unbondingDelegations( - undefined, - 'terravaloper1vk20anceu6h9s00d27pjlvslz3avetkvnwmr35' // node0 - ) - .then(v => v[0]); - - checkUnbondings(unbondings); - }); + // it('redelegations', async () => { + // const redelegations = await staking + // .redelegations(delegator) // manual faucet + // .then(v => v[0]); + + // expect(redelegations).toContainEqual({ + // delegator_address: expect.any(String), + // validator_src_address: expect.any(String), + // validator_dst_address: expect.any(String), + // entries: expect.arrayContaining([ + // { + // initial_balance: expect.any(Int), + // balance: expect.any(Int), + // shares_dst: expect.any(Dec), + // creation_height: expect.any(Number), + // completion_time: expect.any(Date), + // }, + // ]), + // }); + // }); + + // it('unbondingDelegations (delegator & validator)', async () => { + // const unbondings = await staking + // .unbondingDelegations( + // delegator, // manual faucet + // validator // node0 + // ) + // .then(v => v[0]); + + // checkUnbondings(unbondings); + // }); + + // it('unbondingDelegations (delegator)', async () => { + // const unbondings = await staking + // .unbondingDelegations( + // delegator, + // undefined + // ) + // .then(v => v[0]); + // checkUnbondings(unbondings); + // }); + + // it('unbondingDelegations (validator)', async () => { + // const unbondings = await staking + // .unbondingDelegations( + // undefined, + // validator // node0 + // ) + // .then(v => v[0]); + + // checkUnbondings(unbondings); + // }); it('unbondingDelegations without parameter should throw an error', async () => { await expect(staking.unbondingDelegations()).rejects.toThrowError(); diff --git a/src/client/lcd/api/StakingAPI.ts b/src/client/lcd/api/StakingAPI.ts index ec2970c0f..a3ed5cafe 100644 --- a/src/client/lcd/api/StakingAPI.ts +++ b/src/client/lcd/api/StakingAPI.ts @@ -10,6 +10,7 @@ import { Validator } from '../../../core/staking/Validator'; import { Redelegation } from '../../../core/staking/Redelegation'; import { Denom } from '../../../core/Denom'; import { APIParams, Pagination, PaginationOptions } from '../APIRequester'; +import { LCDClient } from '../LCDClient'; export interface StakingParams { /** Amount of time, in seconds, for bonded staking tokens to be unbonded. */ @@ -53,6 +54,11 @@ export namespace StakingPool { } export class StakingAPI extends BaseAPI { + + constructor(public lcd: LCDClient) { + super(lcd.apiRequester); + } + /** * Queries all delegations, filtering by delegator, validator, or both. * diff --git a/src/client/lcd/api/TendermintAPI.spec.ts b/src/client/lcd/api/TendermintAPI.spec.ts index 21a4f13b7..3587d8d4d 100644 --- a/src/client/lcd/api/TendermintAPI.spec.ts +++ b/src/client/lcd/api/TendermintAPI.spec.ts @@ -1,14 +1,17 @@ -import { APIRequester } from '../APIRequester'; import { TendermintAPI } from './TendermintAPI'; import { Tx } from '../../../core/Tx'; -import { Tx as Tx_pb } from '@terra-money/terra.proto/cosmos/tx/v1beta1/tx'; +import { Tx as Tx_pb } from '@terra-money/legacy.proto/cosmos/tx/v1beta1/tx'; +import { LCDClient } from '../LCDClient'; -const c = new APIRequester('https://bombay-lcd.terra.dev/'); -const tendermint = new TendermintAPI(c); +const terra = new LCDClient({ + chainID: 'pisco-1', + URL: 'https://pisco-lcd.terra.dev', +}); +const tendermint = new TendermintAPI(terra); describe('TendermintAPI', () => { it('load block and decode txs', async () => { - const blockInfo = await tendermint.blockInfo(6389857); + const blockInfo = await tendermint.blockInfo(1); if (blockInfo.block.data.txs != null) { blockInfo.block.data.txs.every(txBytes => { const txProto = Tx_pb.decode(Buffer.from(txBytes, 'base64')); @@ -39,8 +42,8 @@ describe('TendermintAPI', () => { }); }); - it('validator set (5900001)', async () => { - const vals = await tendermint.validatorSet(5900001); + it('validator set (1)', async () => { + const vals = await tendermint.validatorSet(1); expect(vals[0]).toContainEqual({ address: expect.any(String), diff --git a/src/client/lcd/api/TendermintAPI.ts b/src/client/lcd/api/TendermintAPI.ts index e88942b5b..7560e9032 100644 --- a/src/client/lcd/api/TendermintAPI.ts +++ b/src/client/lcd/api/TendermintAPI.ts @@ -1,8 +1,14 @@ import { BaseAPI } from './BaseAPI'; import { BlockInfo, DelegateValidator } from '../../../core'; import { APIParams, Pagination } from '../APIRequester'; +import { LCDClient } from '../LCDClient'; export class TendermintAPI extends BaseAPI { + + constructor(public lcd: LCDClient) { + super(lcd.apiRequester); + } + /** * Gets the node's information. */ diff --git a/src/client/lcd/api/TreasuryAPI.spec.ts b/src/client/lcd/api/TreasuryAPI.spec.ts index 78e1ff0e0..b090d2ba0 100644 --- a/src/client/lcd/api/TreasuryAPI.spec.ts +++ b/src/client/lcd/api/TreasuryAPI.spec.ts @@ -1,37 +1,52 @@ -import { APIRequester } from '../APIRequester'; import { TreasuryAPI } from './TreasuryAPI'; import { Coins, Dec, PolicyConstraints } from '../../../core'; +import { LCDClient } from '../LCDClient'; -const c = new APIRequester('https://bombay-lcd.terra.dev/'); -const treasury = new TreasuryAPI(c); +const terra = new LCDClient({ + chainID: 'pisco-1', + URL: 'https://pisco-lcd.terra.dev/', +}); +const treasury = new TreasuryAPI(terra); describe('TreasuryAPI', () => { it('taxCaps', async () => { - await expect(treasury.taxCaps()).resolves.toBeInstanceOf(Coins); + if (terra.config.isClassic) { + // only classic network has param query + await expect(treasury.taxCaps()).resolves.toBeInstanceOf(Coins); + } }); it('taxCap (uusd)', async () => { - await expect( - treasury.taxCap('uusd').then(r => r.toData()) - ).resolves.toMatchObject({ - denom: expect.any(String), - amount: expect.any(String), - }); + if (terra.config.isClassic) { + // only classic network has param query + await expect( + treasury.taxCap('uusd').then(r => r.toData()) + ).resolves.toMatchObject({ + denom: expect.any(String), + amount: expect.any(String), + }); + } }); it('taxCap (invalid)', async () => { - await expect(treasury.taxCap('x')).rejects.toThrow(); + if (terra.config.isClassic) { + // only classic network has param query + await expect(treasury.taxCap('x')).rejects.toThrow(); + } }); it('parameters', async () => { - await expect(treasury.parameters()).resolves.toMatchObject({ - tax_policy: expect.any(PolicyConstraints), - reward_policy: expect.any(PolicyConstraints), - seigniorage_burden_target: expect.any(Dec), - mining_increment: expect.any(Dec), - window_short: expect.any(Number), - window_long: expect.any(Number), - window_probation: expect.any(Number), - }); + if (terra.config.isClassic) { + // only classic network has param query + await expect(treasury.parameters()).resolves.toMatchObject({ + tax_policy: expect.any(PolicyConstraints), + reward_policy: expect.any(PolicyConstraints), + seigniorage_burden_target: expect.any(Dec), + mining_increment: expect.any(Dec), + window_short: expect.any(Number), + window_long: expect.any(Number), + window_probation: expect.any(Number), + }); + } }); }); diff --git a/src/client/lcd/api/TreasuryAPI.ts b/src/client/lcd/api/TreasuryAPI.ts index fe28d3cbd..3876aa5c1 100644 --- a/src/client/lcd/api/TreasuryAPI.ts +++ b/src/client/lcd/api/TreasuryAPI.ts @@ -1,6 +1,7 @@ import { BaseAPI } from './BaseAPI'; import { Coin, Denom, Dec, Coins, PolicyConstraints } from '../../../core'; import { APIParams } from '../APIRequester'; +import { LCDClient } from '../LCDClient'; export interface TreasuryParams { /** @@ -51,11 +52,19 @@ export namespace TreasuryParams { } } export class TreasuryAPI extends BaseAPI { + constructor(public lcd: LCDClient) { + super(lcd.apiRequester); + } + /** * Gets the current registered Tax caps for all denomination * @returns Coin[] */ public async taxCaps(params: APIParams = {}): Promise { + if (!this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + return this.c .get<{ tax_caps: { denom: string; tax_cap: string }[] }>( `/terra/treasury/v1beta1/tax_caps`, @@ -69,6 +78,10 @@ export class TreasuryAPI extends BaseAPI { * @param denom denomination desired for Tax Cap query. */ public async taxCap(denom: Denom, params: APIParams = {}): Promise { + if (!this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + return this.c .get<{ tax_cap: string }>( `/terra/treasury/v1beta1/tax_caps/${denom}`, @@ -81,6 +94,10 @@ export class TreasuryAPI extends BaseAPI { * Gets the current registered Tax Rate. */ public async taxRate(height?: number, _params: APIParams = {}): Promise { + if (!this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + const params = { ..._params }; if (height) { @@ -96,6 +113,10 @@ export class TreasuryAPI extends BaseAPI { * Gets the current registered Reward Weight monetary policy lever. */ public async rewardWeight(params: APIParams = {}): Promise { + if (!this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + return this.c .get<{ reward_weight: string }>( `/terra/treasury/v1beta1/reward_weight`, @@ -108,6 +129,10 @@ export class TreasuryAPI extends BaseAPI { * Gets the tax proceeds for the epoch. */ public async taxProceeds(params: APIParams = {}): Promise { + if (!this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + return this.c .get<{ tax_proceeds: Coins.Data }>( `/terra/treasury/v1beta1/tax_proceeds`, @@ -120,6 +145,10 @@ export class TreasuryAPI extends BaseAPI { * Gets the seigniorage proceeds for the epoch. */ public async seigniorageProceeds(params: APIParams = {}): Promise { + if (!this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + return this.c .get<{ seigniorage_proceeds: string }>( `/terra/treasury/v1beta1/seigniorage_proceeds`, @@ -132,6 +161,10 @@ export class TreasuryAPI extends BaseAPI { * Gets the current Treasury module's parameters. */ public async parameters(params: APIParams = {}): Promise { + if (!this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + return this.c .get<{ params: TreasuryParams.Data }>( `/terra/treasury/v1beta1/params`, diff --git a/src/client/lcd/api/TxAPI.spec.ts b/src/client/lcd/api/TxAPI.spec.ts index 8a97eb6c2..a97f320cf 100644 --- a/src/client/lcd/api/TxAPI.spec.ts +++ b/src/client/lcd/api/TxAPI.spec.ts @@ -11,8 +11,10 @@ const mk = new MnemonicKey({ }); const terra = new LCDClient({ - chainID: 'fake-1', - URL: 'https://fake-lcd.terra.dev', + //chainID: 'fake-1', + //URL: 'https://fake-lcd.terra.dev', + chainID: 'pisco-1', + URL: 'https://pisco-lcd.terra.dev', }); const txAPI = new TxAPI(terra); @@ -132,7 +134,7 @@ describe('TxAPI', () => { const tx = await wallet.createAndSignTx({ msgs: [send] }); await expect(async () => { - await txAPI.broadcast(tx, 500); + await txAPI.broadcast(tx, 1); }).rejects.toThrow('Transaction was not included in a block'); }); }); diff --git a/src/client/lcd/api/TxAPI.ts b/src/client/lcd/api/TxAPI.ts index 4a3c26372..094d74a38 100644 --- a/src/client/lcd/api/TxAPI.ts +++ b/src/client/lcd/api/TxAPI.ts @@ -15,7 +15,8 @@ import { hashToHex } from '../../../util/hash'; import { LCDClient } from '../LCDClient'; import { TxLog } from '../../../core'; import { APIParams, Pagination, PaginationOptions } from '../APIRequester'; -import { BroadcastMode } from '@terra-money/terra.proto/cosmos/tx/v1beta1/service'; +import { BroadcastMode as BroadcastModeV1 } from '@terra-money/legacy.proto/cosmos/tx/v1beta1/service'; +import { BroadcastMode as BroadcastModeV2 } from '@terra-money/terra.proto/cosmos/tx/v1beta1/service'; interface Wait { height: number; @@ -204,7 +205,7 @@ export class TxAPI extends BaseAPI { public async txInfo(txHash: string, params: APIParams = {}): Promise { return this.c .getRaw(`/cosmos/tx/v1beta1/txs/${txHash}`, params) - .then(v => TxInfo.fromData(v.tx_response)); + .then(v => TxInfo.fromData(v.tx_response, this.lcd.config.isClassic)); } /** @@ -292,7 +293,9 @@ export class TxAPI extends BaseAPI { const gasPrices = options.gasPrices || this.lcd.config.gasPrices; const gasAdjustment = options.gasAdjustment || this.lcd.config.gasAdjustment; - const feeDenoms = options.feeDenoms || ['uusd']; + const feeDenoms = options.feeDenoms || [ + this.lcd.config.isClassic ? 'uusd' : 'uluna', + ]; let gas = options.gas; let gasPricesCoins: Coins | undefined; @@ -324,7 +327,9 @@ export class TxAPI extends BaseAPI { const feeAmount = gasPricesCoins ? gasPricesCoins.mul(gas).toIntCeilCoins() - : '0uusd'; + : this.lcd.config.isClassic + ? '0uusd' + : '0uluna'; return new Fee(Number.parseInt(gas), feeAmount, '', ''); } @@ -368,7 +373,9 @@ export class TxAPI extends BaseAPI { * @param tx transaction to encode */ public encode(tx: Tx): string { - return Buffer.from(tx.toBytes()).toString('base64'); + return Buffer.from(tx.toBytes(this.lcd.config.isClassic)).toString( + 'base64' + ); } /** @@ -390,7 +397,7 @@ export class TxAPI extends BaseAPI { private async _broadcast( tx: Tx, - mode: keyof typeof BroadcastMode + mode: keyof typeof BroadcastModeV1 | BroadcastModeV2 ): Promise { return await this.c.post(`/cosmos/tx/v1beta1/txs`, { tx_bytes: this.encode(tx), @@ -415,6 +422,21 @@ export class TxAPI extends BaseAPI { tx_response: SyncTxBroadcastResult.Data; }>(tx, 'BROADCAST_MODE_SYNC'); + if (txResponse.code != 0) { + const result: WaitTxBroadcastResult = { + height: Number.parseInt(txResponse.height), + txhash: txResponse.txhash, + raw_log: txResponse.raw_log, + code: txResponse.code, + codespace: txResponse.codespace, + gas_used: 0, + gas_wanted: 0, + timestamp: '', + logs: [], + }; + return result; + } + let txInfo: undefined | TxInfo; for (let i = 0; i <= timeout / POLL_INTERVAL; i++) { try { @@ -547,7 +569,9 @@ export class TxAPI extends BaseAPI { .getRaw(`cosmos/tx/v1beta1/txs`, params) .then(d => { return { - txs: d.tx_responses.map(tx_response => TxInfo.fromData(tx_response)), + txs: d.tx_responses.map(tx_response => + TxInfo.fromData(tx_response, this.lcd.config.isClassic) + ), pagination: d.pagination, }; }); diff --git a/src/client/lcd/api/WasmAPI.spec.ts b/src/client/lcd/api/WasmAPI.spec.ts index 3192c0055..a112be6d8 100644 --- a/src/client/lcd/api/WasmAPI.spec.ts +++ b/src/client/lcd/api/WasmAPI.spec.ts @@ -1,15 +1,21 @@ -import { APIRequester } from '../APIRequester'; +import { LCDClient } from '../LCDClient'; import { WasmAPI } from './WasmAPI'; -const c = new APIRequester('https://bombay-lcd.terra.dev/'); -const wasm = new WasmAPI(c); +const terra = new LCDClient({ + chainID: 'pisco-1', + URL: 'https://pisco-lcd.terra.dev', +}); +const wasm = new WasmAPI(terra); describe('WasmAPI', () => { it('parameters', async () => { - await expect(wasm.parameters()).resolves.toMatchObject({ - max_contract_size: expect.any(Number), - max_contract_gas: expect.any(Number), - max_contract_msg_size: expect.any(Number), - }); + if (terra.config.isClassic) { + // only classic network has param query + await expect(wasm.parameters()).resolves.toMatchObject({ + max_contract_size: expect.any(Number), + max_contract_gas: expect.any(Number), + max_contract_msg_size: expect.any(Number), + }); + } }); }); diff --git a/src/client/lcd/api/WasmAPI.ts b/src/client/lcd/api/WasmAPI.ts index 3b8631c6e..009d5b1ab 100644 --- a/src/client/lcd/api/WasmAPI.ts +++ b/src/client/lcd/api/WasmAPI.ts @@ -1,37 +1,61 @@ import { BaseAPI } from './BaseAPI'; import { AccAddress } from '../../../core/bech32'; -import { APIParams } from '../APIRequester'; +import { APIParams, Pagination, PaginationOptions } from '../APIRequester'; +import { LCDClient } from '../LCDClient'; +import { HistoryEntry } from '../../../core/wasm/HistoryEntry'; +import { AbsoluteTxPosition } from '../../../core/wasm/AbsoluteTxPosition'; +import { AccessConfig } from '../../../core/wasm'; export interface CodeInfo { code_id: number; code_hash: string; creator: AccAddress; + instantiate_config?: AccessConfig; } export namespace CodeInfo { - export interface Data { + export interface DataV1 { + code_id: string; + code_hash: string; + creator: AccAddress; + } + export interface DataV2 { code_id: string; code_hash: string; creator: AccAddress; + instantiate_config?: AccessConfig.Data; } } export interface ContractInfo { code_id: number; - address: AccAddress; + address?: AccAddress; creator: AccAddress; admin?: AccAddress; - init_msg: any; // object + init_msg?: any; // object + // new properties + label?: string; + created?: AbsoluteTxPosition; + ibc_port_id?: string; } export namespace ContractInfo { - export interface Data { + export interface DataV1 { code_id: string; address: AccAddress; creator: AccAddress; admin: AccAddress; init_msg: any; // object } + + export interface DataV2 { + code_id: string; + creator: AccAddress; + admin: AccAddress; + label?: string; + created?: AbsoluteTxPosition.Data; + ibc_port_id?: string; + } } export interface WasmParams { @@ -48,20 +72,66 @@ export namespace WasmParams { } } +export interface PinnedCodes { + code_ids: number[]; +} + +export namespace PinnedCodes { + export interface Data { + code_ids: string[]; + } +} +export interface QueryResult { + data: string; +} +export namespace QueryResult { + export interface Data { + data: string; + } +} + +export interface Model { + key: string; + value: string; +} + +export namespace Model { + export interface Data { + key: string; + value: string; + } +} + export class WasmAPI extends BaseAPI { + constructor(public lcd: LCDClient) { + super(lcd.apiRequester); + } + public async codeInfo( codeID: number, params: APIParams = {} ): Promise { + if (this.lcd.config.isClassic) { + const endpoint = `/terra/wasm/v1beta1/codes/${codeID}`; + return this.c + .get<{ code_info: CodeInfo.DataV1 }>(endpoint, params) + .then(({ code_info: d }) => ({ + code_id: Number.parseInt(d.code_id), + code_hash: d.code_hash, + creator: d.creator, + })); + } + const endpoint = `/cosmwasm/wasm/v1/code/${codeID}`; + return this.c - .get<{ code_info: CodeInfo.Data }>( - `/terra/wasm/v1beta1/codes/${codeID}`, - params - ) + .get<{ code_info: CodeInfo.DataV2 }>(endpoint, params) .then(({ code_info: d }) => ({ - code_id: Number.parseInt(d.code_id), + code_id: +d.code_id, code_hash: d.code_hash, creator: d.creator, + instantiate_config: d.instantiate_config + ? AccessConfig.fromData(d.instantiate_config) + : undefined, })); } @@ -69,17 +139,34 @@ export class WasmAPI extends BaseAPI { contractAddress: AccAddress, params: APIParams = {} ): Promise { + if (this.lcd.config.isClassic) { + const endpoint = `/terra/wasm/v1beta1/contracts/${contractAddress}`; + return this.c + .get<{ contract_info: ContractInfo.DataV1 }>(endpoint, params) + .then(({ contract_info: d }) => ({ + code_id: Number.parseInt(d.code_id), + address: d.address, + creator: d.creator, + admin: d.admin !== '' ? d.admin : undefined, + init_msg: d.init_msg, + })); + } + + // new endpoint doesn't return init_msg so have to retrieve it from history + const [historyEntry, _] = await this.contractHistory(contractAddress); + + const endpoint = `/cosmwasm/wasm/v1/contract/${contractAddress}`; return this.c - .get<{ contract_info: ContractInfo.Data }>( - `/terra/wasm/v1beta1/contracts/${contractAddress}`, - params - ) + .get<{ contract_info: ContractInfo.DataV2 }>(endpoint, params) .then(({ contract_info: d }) => ({ code_id: Number.parseInt(d.code_id), - address: d.address, + address: contractAddress, creator: d.creator, admin: d.admin !== '' ? d.admin : undefined, - init_msg: d.init_msg, + label: d.label !== '' ? d.label : undefined, + init_msg: historyEntry[0].msg, + created: d.created ? AbsoluteTxPosition.fromData(d.created) : undefined, + ibc_port_id: d.ibc_port_id !== '' ? d.ibc_port_id : undefined, })); } @@ -88,20 +175,33 @@ export class WasmAPI extends BaseAPI { query: object | string, params: APIParams = {} ): Promise { - return this.c - .get<{ query_result: T }>( - `/terra/wasm/v1beta1/contracts/${contractAddress}/store`, - { + if (this.lcd.config.isClassic) { + const endpoint = `/terra/wasm/v1beta1/contracts/${contractAddress}/store`; + return this.c + .get<{ query_result: T }>(endpoint, { ...params, query_msg: Buffer.from(JSON.stringify(query), 'utf-8').toString( 'base64' ), - } - ) - .then(d => d.query_result); + }) + .then(d => d.query_result); + } else { + const query_msg = Buffer.from(JSON.stringify(query), 'utf-8').toString( + 'base64' + ); + const endpoint = `/cosmwasm/wasm/v1/contract/${contractAddress}/smart/${query_msg}`; + return this.c + .get<{ data: T }>(endpoint, { + ...params, + }) + .then(d => d.data); + } } public async parameters(params: APIParams = {}): Promise { + if (!this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } return this.c .get<{ params: WasmParams.Data }>(`/terra/wasm/v1beta1/params`, params) .then(({ params: d }) => ({ @@ -110,4 +210,124 @@ export class WasmAPI extends BaseAPI { max_contract_msg_size: Number.parseInt(d.max_contract_msg_size), })); } + + public async pinnedCodes(params: APIParams = {}): Promise { + if (this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + return this.c + .get<{ pinned_code: PinnedCodes.Data }>( + `/cosmwasm/wasm/v1/codes/pinned`, + params + ) + .then(({ pinned_code: d }) => ({ + code_ids: d.code_ids.map(code_id => Number.parseInt(code_id)), + })); + } + + public async rawContractState( + contractAddress: AccAddress, + query_data: string, + params: APIParams = {} + ): Promise { + if (this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + return this.c + .get<{ result: QueryResult.Data }>( + `/cosmwasm/wasm/v1/contract/${contractAddress}/raw/${query_data}`, + params + ) + .then(({ result: d }) => ({ + data: d.data, + })); + } + + public async smartContractState( + contractAddress: AccAddress, + query_data: object | string, + params: APIParams = {} + ): Promise { + if (this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + return this.c + .get<{ result: QueryResult.Data }>( + `/cosmwasm/wasm/v1/contract/${contractAddress}/smart/${Buffer.from( + JSON.stringify(query_data), + 'utf-8' + ).toString('base64')}`, + params + ) + .then(({ result: d }) => ({ + data: d.data, + })); + } + + public async contractHistory( + contractAddress: AccAddress, + params: Partial = {} + ): Promise<[HistoryEntry[], Pagination]> { + if (this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + return this.c + .get<{ + entries: HistoryEntry.Data[]; + pagination: Pagination; + }>(`/cosmwasm/wasm/v1/contract/${contractAddress}/history`, params) + .then(d => [ + d.entries.map(entry => HistoryEntry.fromData(entry)), + d.pagination, + ]); + } + + public async contractStates( + contractAddress: AccAddress, + params: Partial = {} + ): Promise<[Model[], Pagination]> { + if (this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + return this.c + .get<{ + models: Model.Data[]; + pagination: Pagination; + }>(`/cosmwasm/wasm/v1/contract/${contractAddress}/state`, params) + .then(d => [ + d.models.map(model => { + return { + key: model.key, + value: model.value, + }; + }), + d.pagination, + ]); + } + + public async allCodes( + params: Partial = {} + ): Promise<[CodeInfo[], Pagination]> { + if (this.lcd.config.isClassic) { + throw new Error('Not supported for the network'); + } + return this.c + .get<{ + codeInfos: CodeInfo.DataV2[]; + pagination: Pagination; + }>(`/cosmwasm/wasm/v1/code`, params) + .then(d => [ + d.codeInfos.map(codeInfo => { + return { + code_id: +codeInfo.code_id, + code_hash: codeInfo.code_hash, + creator: codeInfo.creator, + instantiate_config: codeInfo.instantiate_config + ? AccessConfig.fromData(codeInfo.instantiate_config) + : undefined, + }; + }), + d.pagination, + ]); + } } diff --git a/src/core/Msg.ts b/src/core/Msg.ts index 0de6e4c4f..20a10ca22 100644 --- a/src/core/Msg.ts +++ b/src/core/Msg.ts @@ -50,7 +50,7 @@ import { MsgClearContractAdmin, WasmMsg, } from './wasm/msgs'; -import { MsgTransfer, IbcTransferMsg } from './ibc-transfer/msgs'; +import { MsgTransfer, IbcTransferMsg } from './ibc/applications/transfer'; import { MsgCreateClient, MsgUpdateClient, @@ -147,379 +147,410 @@ export namespace Msg { | IbcChannelMsg.Proto | CrisisMsg.Proto; - export function fromAmino(data: Msg.Amino): Msg { + export function fromAmino(data: Msg.Amino, isClassic?: boolean): Msg { switch (data.type) { // bank case 'bank/MsgSend': - return MsgSend.fromAmino(data); + case 'cosmos-sdk/MsgSend': + return MsgSend.fromAmino(data, isClassic); case 'bank/MsgMultiSend': - return MsgMultiSend.fromAmino(data); + case 'cosmos-sdk/MsgMultiSend': + return MsgMultiSend.fromAmino(data, isClassic); // distribution case 'distribution/MsgModifyWithdrawAddress': - return MsgSetWithdrawAddress.fromAmino(data); + case 'cosmos-sdk/MsgModifyWithdrawAddress': + return MsgSetWithdrawAddress.fromAmino(data, isClassic); case 'distribution/MsgWithdrawDelegationReward': - return MsgWithdrawDelegatorReward.fromAmino(data); + case 'cosmos-sdk/MsgWithdrawDelegationReward': + return MsgWithdrawDelegatorReward.fromAmino(data, isClassic); case 'distribution/MsgWithdrawValidatorCommission': - return MsgWithdrawValidatorCommission.fromAmino(data); + case 'cosmos-sdk/MsgWithdrawValCommission': + return MsgWithdrawValidatorCommission.fromAmino(data, isClassic); case 'distribution/MsgFundCommunityPool': - return MsgFundCommunityPool.fromAmino(data); + case 'cosmos-sdk/MsgFundCommunityPool': + return MsgFundCommunityPool.fromAmino(data, isClassic); // feegrant case 'feegrant/MsgGrantAllowance': - return MsgGrantAllowance.fromAmino(data); + case 'cosmos-sdk/MsgGrantAllowance': + return MsgGrantAllowance.fromAmino(data, isClassic); case 'feegrant/MsgRevokeAllowance': - return MsgRevokeAllowance.fromAmino(data); - + case 'cosmos-sdk/MsgRevokeAllowance': + return MsgRevokeAllowance.fromAmino(data, isClassic); // gov case 'gov/MsgDeposit': - return MsgDeposit.fromAmino(data); + case 'cosmos-sdk/MsgDeposit': + return MsgDeposit.fromAmino(data, isClassic); case 'gov/MsgSubmitProposal': - return MsgSubmitProposal.fromAmino(data); + case 'cosmos-sdk/MsgSubmitProposal': + return MsgSubmitProposal.fromAmino(data, isClassic); case 'gov/MsgVote': - return MsgVote.fromAmino(data); + case 'cosmos-sdk/MsgVote': + return MsgVote.fromAmino(data, isClassic); case 'gov/MsgVoteWeighted': - return MsgVoteWeighted.fromAmino(data); + case 'cosmos-sdk/MsgVoteWeighted': + return MsgVoteWeighted.fromAmino(data, isClassic); // market case 'market/MsgSwap': - return MsgSwap.fromAmino(data); + return MsgSwap.fromAmino(data, isClassic); case 'market/MsgSwapSend': - return MsgSwapSend.fromAmino(data); + return MsgSwapSend.fromAmino(data, isClassic); // msgauth case 'msgauth/MsgGrantAuthorization': - return MsgGrantAuthorization.fromAmino(data); + case 'cosmos-sdk/MsgGrant': + return MsgGrantAuthorization.fromAmino(data, isClassic); case 'msgauth/MsgRevokeAuthorization': - return MsgRevokeAuthorization.fromAmino(data); + case 'cosmos-sdk/MsgRevoke': + return MsgRevokeAuthorization.fromAmino(data, isClassic); case 'msgauth/MsgExecAuthorized': - return MsgExecAuthorized.fromAmino(data); + case 'cosmos-sdk/MsgExec': + return MsgExecAuthorized.fromAmino(data, isClassic); // oracle case 'oracle/MsgDelegateFeedConsent': - return MsgDelegateFeedConsent.fromAmino(data); + return MsgDelegateFeedConsent.fromAmino(data, isClassic); case 'oracle/MsgAggregateExchangeRatePrevote': - return MsgAggregateExchangeRatePrevote.fromAmino(data); + return MsgAggregateExchangeRatePrevote.fromAmino(data, isClassic); case 'oracle/MsgAggregateExchangeRateVote': - return MsgAggregateExchangeRateVote.fromAmino(data); - + return MsgAggregateExchangeRateVote.fromAmino(data, isClassic); // slashing case 'slashing/MsgUnjail': - return MsgUnjail.fromAmino(data); + case 'cosmos-sdk/MsgUnjail': + return MsgUnjail.fromAmino(data, isClassic); // staking case 'staking/MsgDelegate': - return MsgDelegate.fromAmino(data); + case 'cosmos-sdk/MsgDelegate': + return MsgDelegate.fromAmino(data, isClassic); case 'staking/MsgUndelegate': - return MsgUndelegate.fromAmino(data); + case 'cosmos-sdk/MsgUndelegate': + return MsgUndelegate.fromAmino(data, isClassic); case 'staking/MsgBeginRedelegate': - return MsgBeginRedelegate.fromAmino(data); + case 'cosmos-sdk/MsgBeginRedelegate': + return MsgBeginRedelegate.fromAmino(data, isClassic); case 'staking/MsgCreateValidator': - return MsgCreateValidator.fromAmino(data); + case 'cosmos-sdk/MsgCreateValidator': + return MsgCreateValidator.fromAmino(data, isClassic); case 'staking/MsgEditValidator': - return MsgEditValidator.fromAmino(data); + case 'cosmos-sdk/MsgEditValidator': + return MsgEditValidator.fromAmino(data, isClassic); // wasm case 'wasm/MsgStoreCode': - return MsgStoreCode.fromAmino(data); + return MsgStoreCode.fromAmino(data, isClassic); case 'wasm/MsgMigrateCode': - return MsgMigrateCode.fromAmino(data); + return MsgMigrateCode.fromAmino(data, isClassic); case 'wasm/MsgInstantiateContract': - return MsgInstantiateContract.fromAmino(data); + return MsgInstantiateContract.fromAmino(data, isClassic); case 'wasm/MsgExecuteContract': - return MsgExecuteContract.fromAmino(data); + return MsgExecuteContract.fromAmino(data, isClassic); case 'wasm/MsgMigrateContract': - return MsgMigrateContract.fromAmino(data); + return MsgMigrateContract.fromAmino(data, isClassic); case 'wasm/MsgUpdateContractAdmin': - return MsgUpdateContractAdmin.fromAmino(data); + case 'wasm/MsgUpdateAdmin': + return MsgUpdateContractAdmin.fromAmino(data, isClassic); case 'wasm/MsgClearContractAdmin': - return MsgClearContractAdmin.fromAmino(data); - + case 'wasm/MsgClearAdmin': + return MsgClearContractAdmin.fromAmino(data, isClassic); // ibc-transfer case 'cosmos-sdk/MsgTransfer': - return MsgTransfer.fromAmino(data); - + return MsgTransfer.fromAmino(data, isClassic); // crisis case 'crisis/MsgVerifyInvariant': - return MsgVerifyInvariant.fromAmino(data); + case 'cosmos-sdk/MsgVerifyInvariant': + return MsgVerifyInvariant.fromAmino(data, isClassic); } } - export function fromData(data: Msg.Data): Msg { + export function fromData(data: Msg.Data, isClassic?: boolean): Msg { switch (data['@type']) { // bank case '/cosmos.bank.v1beta1.MsgSend': - return MsgSend.fromData(data); + return MsgSend.fromData(data, isClassic); case '/cosmos.bank.v1beta1.MsgMultiSend': - return MsgMultiSend.fromData(data); + return MsgMultiSend.fromData(data, isClassic); // distribution case '/cosmos.distribution.v1beta1.MsgSetWithdrawAddress': - return MsgSetWithdrawAddress.fromData(data); + return MsgSetWithdrawAddress.fromData(data, isClassic); case '/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward': - return MsgWithdrawDelegatorReward.fromData(data); + return MsgWithdrawDelegatorReward.fromData(data, isClassic); case '/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission': - return MsgWithdrawValidatorCommission.fromData(data); + return MsgWithdrawValidatorCommission.fromData(data, isClassic); case '/cosmos.distribution.v1beta1.MsgFundCommunityPool': - return MsgFundCommunityPool.fromData(data); + return MsgFundCommunityPool.fromData(data, isClassic); // feegrant case '/cosmos.feegrant.v1beta1.MsgGrantAllowance': - return MsgGrantAllowance.fromData(data); + return MsgGrantAllowance.fromData(data, isClassic); case '/cosmos.feegrant.v1beta1.MsgRevokeAllowance': - return MsgRevokeAllowance.fromData(data); + return MsgRevokeAllowance.fromData(data, isClassic); // gov case '/cosmos.gov.v1beta1.MsgDeposit': - return MsgDeposit.fromData(data); + return MsgDeposit.fromData(data, isClassic); case '/cosmos.gov.v1beta1.MsgSubmitProposal': - return MsgSubmitProposal.fromData(data); + return MsgSubmitProposal.fromData(data, isClassic); case '/cosmos.gov.v1beta1.MsgVote': - return MsgVote.fromData(data); + return MsgVote.fromData(data, isClassic); case '/cosmos.gov.v1beta1.MsgVoteWeighted': - return MsgVoteWeighted.fromData(data); + return MsgVoteWeighted.fromData(data, isClassic); // market case '/terra.market.v1beta1.MsgSwap': - return MsgSwap.fromData(data); + return MsgSwap.fromData(data, isClassic); case '/terra.market.v1beta1.MsgSwapSend': - return MsgSwapSend.fromData(data); + return MsgSwapSend.fromData(data, isClassic); // authz case '/cosmos.authz.v1beta1.MsgGrant': - return MsgGrantAuthorization.fromData(data); + return MsgGrantAuthorization.fromData(data, isClassic); case '/cosmos.authz.v1beta1.MsgRevoke': - return MsgRevokeAuthorization.fromData(data); + return MsgRevokeAuthorization.fromData(data, isClassic); case '/cosmos.authz.v1beta1.MsgExec': - return MsgExecAuthorized.fromData(data); + return MsgExecAuthorized.fromData(data, isClassic); // oracle case '/terra.oracle.v1beta1.MsgDelegateFeedConsent': - return MsgDelegateFeedConsent.fromData(data); + return MsgDelegateFeedConsent.fromData(data, isClassic); case '/terra.oracle.v1beta1.MsgAggregateExchangeRatePrevote': - return MsgAggregateExchangeRatePrevote.fromData(data); + return MsgAggregateExchangeRatePrevote.fromData(data, isClassic); case '/terra.oracle.v1beta1.MsgAggregateExchangeRateVote': - return MsgAggregateExchangeRateVote.fromData(data); - + return MsgAggregateExchangeRateVote.fromData(data, isClassic); // slashing case '/cosmos.slashing.v1beta1.MsgUnjail': - return MsgUnjail.fromData(data); + return MsgUnjail.fromData(data, isClassic); // staking case '/cosmos.staking.v1beta1.MsgDelegate': - return MsgDelegate.fromData(data); + return MsgDelegate.fromData(data, isClassic); case '/cosmos.staking.v1beta1.MsgUndelegate': - return MsgUndelegate.fromData(data); + return MsgUndelegate.fromData(data, isClassic); case '/cosmos.staking.v1beta1.MsgBeginRedelegate': - return MsgBeginRedelegate.fromData(data); + return MsgBeginRedelegate.fromData(data, isClassic); case '/cosmos.staking.v1beta1.MsgCreateValidator': - return MsgCreateValidator.fromData(data); + return MsgCreateValidator.fromData(data, isClassic); case '/cosmos.staking.v1beta1.MsgEditValidator': - return MsgEditValidator.fromData(data); + return MsgEditValidator.fromData(data, isClassic); // wasm case '/terra.wasm.v1beta1.MsgStoreCode': - return MsgStoreCode.fromData(data); - case '/terra.wasm.v1beta1.MsgMigrateCode': - return MsgMigrateCode.fromData(data); + case '/cosmwasm.wasm.v1.MsgStoreCode': + return MsgStoreCode.fromData(data, isClassic); + case '/terra.wasm.v1beta1.MsgMigrateCode': // isClassic only + return MsgMigrateCode.fromData(data, isClassic); case '/terra.wasm.v1beta1.MsgInstantiateContract': - return MsgInstantiateContract.fromData(data); + case '/cosmwasm.wasm.v1.MsgInstantiateContract': + return MsgInstantiateContract.fromData(data, isClassic); case '/terra.wasm.v1beta1.MsgExecuteContract': - return MsgExecuteContract.fromData(data); + case '/cosmwasm.wasm.v1.MsgExecuteContract': + return MsgExecuteContract.fromData(data, isClassic); case '/terra.wasm.v1beta1.MsgMigrateContract': - return MsgMigrateContract.fromData(data); + case '/cosmwasm.wasm.v1.MsgMigrateContract': + return MsgMigrateContract.fromData(data, isClassic); case '/terra.wasm.v1beta1.MsgUpdateContractAdmin': - return MsgUpdateContractAdmin.fromData(data); + case '/cosmwasm.wasm.v1.MsgUpdateAdmin': + return MsgUpdateContractAdmin.fromData(data, isClassic); case '/terra.wasm.v1beta1.MsgClearContractAdmin': - return MsgClearContractAdmin.fromData(data); + case '/cosmwasm.wasm.v1.MsgClearAdmin': + return MsgClearContractAdmin.fromData(data, isClassic); // ibc-transfer case '/ibc.applications.transfer.v1.MsgTransfer': - return MsgTransfer.fromData(data); + return MsgTransfer.fromData(data, isClassic); // ibc-client case '/ibc.core.client.v1.MsgCreateClient': - return MsgCreateClient.fromData(data); + return MsgCreateClient.fromData(data, isClassic); case '/ibc.core.client.v1.MsgUpdateClient': - return MsgUpdateClient.fromData(data); + return MsgUpdateClient.fromData(data, isClassic); case '/ibc.core.client.v1.MsgUpgradeClient': - return MsgUpgradeClient.fromData(data); + return MsgUpgradeClient.fromData(data, isClassic); case '/ibc.core.client.v1.MsgSubmitMisbehaviour': - return MsgSubmitMisbehaviour.fromData(data); + return MsgSubmitMisbehaviour.fromData(data, isClassic); // ibc-connection case '/ibc.core.connection.v1.MsgConnectionOpenInit': - return MsgConnectionOpenInit.fromData(data); + return MsgConnectionOpenInit.fromData(data, isClassic); case '/ibc.core.connection.v1.MsgConnectionOpenTry': - return MsgConnectionOpenTry.fromData(data); + return MsgConnectionOpenTry.fromData(data, isClassic); case '/ibc.core.connection.v1.MsgConnectionOpenConfirm': - return MsgConnectionOpenConfirm.fromData(data); + return MsgConnectionOpenConfirm.fromData(data, isClassic); case '/ibc.core.connection.v1.MsgConnectionOpenAck': - return MsgConnectionOpenAck.fromData(data); + return MsgConnectionOpenAck.fromData(data, isClassic); // ibc-channel case '/ibc.core.channel.v1.MsgChannelOpenInit': - return MsgChannelOpenInit.fromData(data); + return MsgChannelOpenInit.fromData(data, isClassic); case '/ibc.core.channel.v1.MsgChannelOpenTry': - return MsgChannelOpenTry.fromData(data); + return MsgChannelOpenTry.fromData(data, isClassic); case '/ibc.core.channel.v1.MsgChannelOpenConfirm': - return MsgChannelOpenConfirm.fromData(data); + return MsgChannelOpenConfirm.fromData(data, isClassic); case '/ibc.core.channel.v1.MsgChannelOpenAck': - return MsgChannelOpenAck.fromData(data); + return MsgChannelOpenAck.fromData(data, isClassic); case '/ibc.core.channel.v1.MsgChannelCloseInit': - return MsgChannelCloseInit.fromData(data); + return MsgChannelCloseInit.fromData(data, isClassic); case '/ibc.core.channel.v1.MsgChannelCloseConfirm': - return MsgChannelCloseConfirm.fromData(data); + return MsgChannelCloseConfirm.fromData(data, isClassic); case '/ibc.core.channel.v1.MsgRecvPacket': - return MsgRecvPacket.fromData(data); + return MsgRecvPacket.fromData(data, isClassic); case '/ibc.core.channel.v1.MsgAcknowledgement': - return MsgAcknowledgement.fromData(data); + return MsgAcknowledgement.fromData(data, isClassic); case '/ibc.core.channel.v1.MsgTimeout': - return MsgTimeout.fromData(data); + return MsgTimeout.fromData(data, isClassic); case '/ibc.core.channel.v1.MsgTimeoutOnClose': - return MsgTimeoutOnClose.fromData(data); + return MsgTimeoutOnClose.fromData(data, isClassic); // crisis case '/cosmos.crisis.v1beta1.MsgVerifyInvariant': - return MsgVerifyInvariant.fromData(data); + return MsgVerifyInvariant.fromData(data, isClassic); + default: + throw Error(`not supported msg ${data['@type']}`); } } - export function fromProto(proto: Any): Msg { + export function fromProto(proto: Any, isClassic?: boolean): Msg { switch (proto.typeUrl) { // bank case '/cosmos.bank.v1beta1.MsgSend': - return MsgSend.unpackAny(proto); + return MsgSend.unpackAny(proto, isClassic); case '/cosmos.bank.v1beta1.MsgMultiSend': - return MsgMultiSend.unpackAny(proto); + return MsgMultiSend.unpackAny(proto, isClassic); // distribution case '/cosmos.distribution.v1beta1.MsgSetWithdrawAddress': - return MsgSetWithdrawAddress.unpackAny(proto); + return MsgSetWithdrawAddress.unpackAny(proto, isClassic); case '/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward': - return MsgWithdrawDelegatorReward.unpackAny(proto); + return MsgWithdrawDelegatorReward.unpackAny(proto, isClassic); case '/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission': - return MsgWithdrawValidatorCommission.unpackAny(proto); + return MsgWithdrawValidatorCommission.unpackAny(proto, isClassic); case '/cosmos.distribution.v1beta1.MsgFundCommunityPool': - return MsgFundCommunityPool.unpackAny(proto); + return MsgFundCommunityPool.unpackAny(proto, isClassic); // feegrant case '/cosmos.feegrant.v1beta1.MsgGrantAllowance': - return MsgGrantAllowance.unpackAny(proto); + return MsgGrantAllowance.unpackAny(proto, isClassic); case '/cosmos.feegrant.v1beta1.MsgRevokeAllowance': - return MsgRevokeAllowance.unpackAny(proto); + return MsgRevokeAllowance.unpackAny(proto, isClassic); // gov case '/cosmos.gov.v1beta1.MsgDeposit': - return MsgDeposit.unpackAny(proto); + return MsgDeposit.unpackAny(proto, isClassic); case '/cosmos.gov.v1beta1.MsgSubmitProposal': - return MsgSubmitProposal.unpackAny(proto); + return MsgSubmitProposal.unpackAny(proto, isClassic); case '/cosmos.gov.v1beta1.MsgVote': - return MsgVote.unpackAny(proto); + return MsgVote.unpackAny(proto, isClassic); // market case '/terra.market.v1beta1.MsgSwap': - return MsgSwap.unpackAny(proto); + return MsgSwap.unpackAny(proto, isClassic); case '/terra.market.v1beta1.MsgSwapSend': - return MsgSwapSend.unpackAny(proto); + return MsgSwapSend.unpackAny(proto, isClassic); // authz case '/cosmos.authz.v1beta1.MsgGrant': - return MsgGrantAuthorization.unpackAny(proto); + return MsgGrantAuthorization.unpackAny(proto, isClassic); case '/cosmos.authz.v1beta1.MsgRevoke': - return MsgRevokeAuthorization.unpackAny(proto); + return MsgRevokeAuthorization.unpackAny(proto, isClassic); case '/cosmos.authz.v1beta1.MsgExec': - return MsgExecAuthorized.unpackAny(proto); + return MsgExecAuthorized.unpackAny(proto, isClassic); // oracle case '/terra.oracle.v1beta1.MsgDelegateFeedConsent': - return MsgDelegateFeedConsent.unpackAny(proto); + return MsgDelegateFeedConsent.unpackAny(proto, isClassic); case '/terra.oracle.v1beta1.MsgAggregateExchangeRatePrevote': - return MsgAggregateExchangeRatePrevote.unpackAny(proto); + return MsgAggregateExchangeRatePrevote.unpackAny(proto, isClassic); case '/terra.oracle.v1beta1.MsgAggregateExchangeRateVote': - return MsgAggregateExchangeRateVote.unpackAny(proto); - + return MsgAggregateExchangeRateVote.unpackAny(proto, isClassic); // slashing case '/cosmos.slashing.v1beta1.MsgUnjail': - return MsgUnjail.unpackAny(proto); + return MsgUnjail.unpackAny(proto, isClassic); // staking case '/cosmos.staking.v1beta1.MsgDelegate': - return MsgDelegate.unpackAny(proto); + return MsgDelegate.unpackAny(proto, isClassic); case '/cosmos.staking.v1beta1.MsgUndelegate': - return MsgUndelegate.unpackAny(proto); + return MsgUndelegate.unpackAny(proto, isClassic); case '/cosmos.staking.v1beta1.MsgBeginRedelegate': - return MsgBeginRedelegate.unpackAny(proto); + return MsgBeginRedelegate.unpackAny(proto, isClassic); case '/cosmos.staking.v1beta1.MsgCreateValidator': - return MsgCreateValidator.unpackAny(proto); + return MsgCreateValidator.unpackAny(proto, isClassic); case '/cosmos.staking.v1beta1.MsgEditValidator': - return MsgEditValidator.unpackAny(proto); + return MsgEditValidator.unpackAny(proto, isClassic); // wasm case '/terra.wasm.v1beta1.MsgStoreCode': - return MsgStoreCode.unpackAny(proto); - case '/terra.wasm.v1beta1.MsgMigrateCode': - return MsgMigrateCode.unpackAny(proto); + case '/cosmwasm.wasm.v1.MsgStoreCode': + return MsgStoreCode.unpackAny(proto, isClassic); + case '/terra.wasm.v1beta1.MsgMigrateCode': // isClassic only + return MsgMigrateCode.unpackAny(proto, isClassic); case '/terra.wasm.v1beta1.MsgInstantiateContract': - return MsgInstantiateContract.unpackAny(proto); + case '/cosmwasm.wasm.v1.MsgInstantiateContract': + return MsgInstantiateContract.unpackAny(proto, isClassic); case '/terra.wasm.v1beta1.MsgExecuteContract': - return MsgExecuteContract.unpackAny(proto); + case '/cosmwasm.wasm.v1.MsgExecuteContract': + return MsgExecuteContract.unpackAny(proto, isClassic); case '/terra.wasm.v1beta1.MsgMigrateContract': - return MsgMigrateContract.unpackAny(proto); + case '/cosmwasm.wasm.v1beta1.MsgMigrateContract': + return MsgMigrateContract.unpackAny(proto, isClassic); case '/terra.wasm.v1beta1.MsgUpdateContractAdmin': - return MsgUpdateContractAdmin.unpackAny(proto); + case '/cosmwasm.wasm.v1beta1.MsgUpdateAdmin': + return MsgUpdateContractAdmin.unpackAny(proto, isClassic); case '/terra.wasm.v1beta1.MsgClearContractAdmin': - return MsgClearContractAdmin.unpackAny(proto); + case '/cosmwasm.wasm.v1.MsgClearAdmin': + return MsgClearContractAdmin.unpackAny(proto, isClassic); // ibc-transfer case '/ibc.applications.transfer.v1.MsgTransfer': - return MsgTransfer.unpackAny(proto); + return MsgTransfer.unpackAny(proto, isClassic); // ibc-client case '/ibc.core.client.v1.MsgCreateClient': - return MsgCreateClient.unpackAny(proto); + return MsgCreateClient.unpackAny(proto, isClassic); case '/ibc.core.client.v1.MsgUpdateClient': - return MsgUpdateClient.unpackAny(proto); + return MsgUpdateClient.unpackAny(proto, isClassic); case '/ibc.core.client.v1.MsgUpgradeClient': - return MsgUpgradeClient.unpackAny(proto); + return MsgUpgradeClient.unpackAny(proto, isClassic); case '/ibc.core.client.v1.MsgSubmitMisbehaviour': - return MsgSubmitMisbehaviour.unpackAny(proto); + return MsgSubmitMisbehaviour.unpackAny(proto, isClassic); // ibc-connection case '/ibc.core.connection.v1.MsgConnectionOpenInit': - return MsgConnectionOpenInit.unpackAny(proto); + return MsgConnectionOpenInit.unpackAny(proto, isClassic); case '/ibc.core.connection.v1.MsgConnectionOpenTry': - return MsgConnectionOpenTry.unpackAny(proto); + return MsgConnectionOpenTry.unpackAny(proto, isClassic); case '/ibc.core.connection.v1.MsgConnectionOpenConfirm': - return MsgConnectionOpenConfirm.unpackAny(proto); + return MsgConnectionOpenConfirm.unpackAny(proto, isClassic); case '/ibc.core.connection.v1.MsgConnectionOpenAck': - return MsgConnectionOpenAck.unpackAny(proto); + return MsgConnectionOpenAck.unpackAny(proto, isClassic); // ibc-channel case '/ibc.core.channel.v1.MsgChannelOpenInit': - return MsgChannelOpenInit.unpackAny(proto); + return MsgChannelOpenInit.unpackAny(proto, isClassic); case '/ibc.core.channel.v1.MsgChannelOpenTry': - return MsgChannelOpenTry.unpackAny(proto); + return MsgChannelOpenTry.unpackAny(proto, isClassic); case '/ibc.core.channel.v1.MsgChannelOpenConfirm': - return MsgChannelOpenConfirm.unpackAny(proto); + return MsgChannelOpenConfirm.unpackAny(proto, isClassic); case '/ibc.core.channel.v1.MsgChannelOpenAck': - return MsgChannelOpenAck.unpackAny(proto); + return MsgChannelOpenAck.unpackAny(proto, isClassic); case '/ibc.core.channel.v1.MsgChannelCloseInit': - return MsgChannelCloseInit.unpackAny(proto); + return MsgChannelCloseInit.unpackAny(proto, isClassic); case '/ibc.core.channel.v1.MsgChannelCloseConfirm': - return MsgChannelCloseConfirm.unpackAny(proto); + return MsgChannelCloseConfirm.unpackAny(proto, isClassic); case '/ibc.core.channel.v1.MsgRecvPacket': - return MsgRecvPacket.unpackAny(proto); + return MsgRecvPacket.unpackAny(proto, isClassic); case '/ibc.core.channel.v1.MsgAcknowledgement': - return MsgAcknowledgement.unpackAny(proto); + return MsgAcknowledgement.unpackAny(proto, isClassic); case '/ibc.core.channel.v1.MsgTimeout': - return MsgTimeout.unpackAny(proto); + return MsgTimeout.unpackAny(proto, isClassic); case '/ibc.core.channel.v1.MsgTimeoutOnClose': - return MsgTimeoutOnClose.unpackAny(proto); + return MsgTimeoutOnClose.unpackAny(proto, isClassic); // crisis case '/cosmos.crisis.v1beta1.MsgVerifyInvariant': - return MsgVerifyInvariant.unpackAny(proto); - + return MsgVerifyInvariant.unpackAny(proto, isClassic); default: throw Error(`not supported msg ${proto.typeUrl}`); } diff --git a/src/core/SignDoc.ts b/src/core/SignDoc.ts index 7722f0bac..2787ad0b0 100644 --- a/src/core/SignDoc.ts +++ b/src/core/SignDoc.ts @@ -37,7 +37,7 @@ export class SignDoc extends JSONSerializable< super(); } - public toAmino(): SignDoc.Amino { + public toAmino(isClassic?: boolean): SignDoc.Amino { const { chain_id, account_number, @@ -55,25 +55,25 @@ export class SignDoc extends JSONSerializable< ? timeout_height.toString() : undefined, fee: fee.toAmino(), - msgs: messages.map(m => m.toAmino()), + msgs: messages.map(m => m.toAmino(isClassic)), memo: memo ?? '', }; } - public toData(): SignDoc.Data { + public toData(isClassic?: boolean): SignDoc.Data { const { account_number, chain_id, tx_body, auth_info } = this; return { - body_bytes: Buffer.from(tx_body.toBytes()).toString('base64'), + body_bytes: Buffer.from(tx_body.toBytes(isClassic)).toString('base64'), auth_info_bytes: Buffer.from(auth_info.toBytes()).toString('base64'), account_number: account_number.toFixed(), chain_id, }; } - public toProto(): SignDoc.Proto { + public toProto(isClassic?: boolean): SignDoc.Proto { const { account_number, chain_id, tx_body, auth_info } = this; return SignDoc_pb.fromPartial({ - bodyBytes: tx_body.toBytes(), + bodyBytes: tx_body.toBytes(isClassic), authInfoBytes: auth_info.toBytes(), accountNumber: Long.fromNumber(account_number), chainId: chain_id, @@ -84,8 +84,8 @@ export class SignDoc extends JSONSerializable< return new Tx(this.tx_body, this.auth_info, []); } - public toBytes(): Uint8Array { - return SignDoc_pb.encode(this.toProto()).finish(); + public toBytes(isClassic?: boolean): Uint8Array { + return SignDoc_pb.encode(this.toProto(isClassic)).finish(); } } diff --git a/src/core/Tx.spec.ts b/src/core/Tx.spec.ts index 97f94c8bc..ce27724cb 100644 --- a/src/core/Tx.spec.ts +++ b/src/core/Tx.spec.ts @@ -55,6 +55,6 @@ describe('Tx', () => { }, }; - expect(Tx.fromAmino(txAmino)).toBeTruthy(); + expect(Tx.fromAmino(txAmino, true)).toBeTruthy(); }); }); diff --git a/src/core/Tx.ts b/src/core/Tx.ts index 82ad21e37..f40b27557 100644 --- a/src/core/Tx.ts +++ b/src/core/Tx.ts @@ -32,12 +32,12 @@ export class Tx { public signatures: string[] ) {} - public static fromAmino(data: Tx.Amino): Tx { + public static fromAmino(data: Tx.Amino, isClassic?: boolean): Tx { const signatures = data.value.signatures.map(s => SignatureV2.fromAmino(s)); return new Tx( new TxBody( - data.value.msg.map(m => Msg.fromAmino(m)), + data.value.msg.map(m => Msg.fromAmino(m, isClassic)), data.value.memo, Number.parseInt(data.value.timeout_height) ), @@ -46,48 +46,48 @@ export class Tx { ); } - public static fromData(data: Tx.Data): Tx { + public static fromData(data: Tx.Data, isClassic?: boolean): Tx { return new Tx( - TxBody.fromData(data.body), + TxBody.fromData(data.body, isClassic), AuthInfo.fromData(data.auth_info), data.signatures ); } - public toData(): Tx.Data { + public toData(isClassic?: boolean): Tx.Data { return { - body: this.body.toData(), + body: this.body.toData(isClassic), auth_info: this.auth_info.toData(), signatures: this.signatures, }; } - public static unpackAny(anyProto: Any): Tx { - return this.fromProto(Tx_pb.decode(anyProto.value)); + public static unpackAny(anyProto: Any, isClassic?: boolean): Tx { + return this.fromProto(Tx_pb.decode(anyProto.value), isClassic); } - public static fromProto(proto: Tx.Proto): Tx { + public static fromProto(proto: Tx.Proto, isClassic?: boolean): Tx { return new Tx( - TxBody.fromProto(proto.body as TxBody_pb), + TxBody.fromProto(proto.body as TxBody_pb, isClassic), AuthInfo.fromProto(proto.authInfo as AuthInfo_pb), proto.signatures.map(sig => Buffer.from(sig).toString('base64')) ); } - public toProto(): Tx.Proto { + public toProto(isClassic?: boolean): Tx.Proto { return Tx_pb.fromPartial({ - body: this.body.toProto(), + body: this.body.toProto(isClassic), authInfo: this.auth_info.toProto(), signatures: this.signatures.map(s => Buffer.from(s, 'base64')), }); } - public toBytes(): Uint8Array { - return Tx_pb.encode(this.toProto()).finish(); + public toBytes(isClassic?: boolean): Uint8Array { + return Tx_pb.encode(this.toProto(isClassic)).finish(); } - public static fromBuffer(buf: Buffer): Tx { - return Tx.fromProto(Tx_pb.decode(buf)); + public static fromBuffer(buf: Buffer, isClassic?: boolean): Tx { + return Tx.fromProto(Tx_pb.decode(buf), isClassic); } public appendEmptySignatures(signers: SignerData[]) { @@ -146,7 +146,7 @@ export class Tx { export namespace Tx { export interface Amino { - type: 'core/StdTx'; + type: 'core/StdTx' | 'cosmos-sdk/StdTx'; value: { msg: Msg.Amino[]; fee: Fee.Amino; @@ -171,40 +171,40 @@ export class TxBody { public timeout_height?: number ) {} - public static fromData(data: TxBody.Data): TxBody { + public static fromData(data: TxBody.Data, isClassic?: boolean): TxBody { return new TxBody( - data.messages.map(m => Msg.fromData(m)), + data.messages.map(m => Msg.fromData(m, isClassic)), data.memo, Number.parseInt(data.timeout_height) ); } - public toData(): TxBody.Data { + public toData(isClassic?: boolean): TxBody.Data { return { memo: this.memo ?? '', - messages: this.messages.map(m => m.toData()), + messages: this.messages.map(m => m.toData(isClassic)), timeout_height: (this.timeout_height ?? 0).toFixed(), }; } - public static fromProto(proto: TxBody.Proto): TxBody { + public static fromProto(proto: TxBody.Proto, isClassic?: boolean): TxBody { return new TxBody( - proto.messages.map(m => Msg.fromProto(m)), + proto.messages.map(m => Msg.fromProto(m, isClassic)), proto.memo, proto.timeoutHeight.toNumber() ); } - public toProto(): TxBody.Proto { + public toProto(isClassic?: boolean): TxBody.Proto { return TxBody_pb.fromPartial({ memo: this.memo, - messages: this.messages.map(m => m.packAny()), + messages: this.messages.map(m => m.packAny(isClassic)), timeoutHeight: Long.fromNumber(this.timeout_height ?? 0), }); } - public toBytes(): Uint8Array { - return TxBody_pb.encode(this.toProto()).finish(); + public toBytes(isClassic?: boolean): Uint8Array { + return TxBody_pb.encode(this.toProto(isClassic)).finish(); } } diff --git a/src/core/TxInfo.spec.ts b/src/core/TxInfo.spec.ts index c85be18b8..83afe50f5 100644 --- a/src/core/TxInfo.spec.ts +++ b/src/core/TxInfo.spec.ts @@ -110,12 +110,12 @@ const instantiateContractTxAmino = { describe('TxInfo', () => { it('deserializes', () => { data.tx_responses.forEach((txInfo: TxInfo.Data) => { - expect(TxInfo.fromData(txInfo)).toBeTruthy(); + expect(TxInfo.fromData(txInfo, true)).toBeTruthy(); }); }); it('parses events correctly', () => { - const tx = TxInfo.fromData(instantiateContractTxAmino as TxInfo.Data); + const tx = TxInfo.fromData(instantiateContractTxAmino as TxInfo.Data, true); if (!tx.logs) { throw new Error('logs undefined'); diff --git a/src/core/TxInfo.ts b/src/core/TxInfo.ts index d138c5419..2747d8860 100644 --- a/src/core/TxInfo.ts +++ b/src/core/TxInfo.ts @@ -50,7 +50,7 @@ export class TxInfo { ); } - public static fromData(data: TxInfo.Data): TxInfo { + public static fromData(data: TxInfo.Data, isClassic?: boolean): TxInfo { return new TxInfo( Number.parseInt(data.height), data.txhash, @@ -58,7 +58,7 @@ export class TxInfo { data.logs.map(log => TxLog.fromData(log)), Number.parseInt(data.gas_wanted), Number.parseInt(data.gas_used), - Tx.fromData(data.tx), + Tx.fromData(data.tx, isClassic), data.timestamp, data.code, data.codespace diff --git a/src/core/auth/Account.ts b/src/core/auth/Account.ts index a753d5f9f..c5d50d97d 100644 --- a/src/core/auth/Account.ts +++ b/src/core/auth/Account.ts @@ -1,40 +1,92 @@ -import { Any } from '@terra-money/terra.proto/google/protobuf/any'; +import { Any } from '@terra-money/legacy.proto/google/protobuf/any'; import { BaseAccount } from './BaseAccount'; import { LazyGradedVestingAccount } from './LazyGradedVestingAccount'; +import { ContinuousVestingAccount } from './ContinuousVestingAccount'; +import { DelayedVestingAccount } from './DelayedVestingAccount'; +import { PeriodicVestingAccount } from './PeriodicVestingAccount'; +import { BaseVestingAccount } from './BaseVestingAccount'; -export type Account = BaseAccount | LazyGradedVestingAccount; +export type Account = + | BaseAccount + | BaseVestingAccount + | LazyGradedVestingAccount + | ContinuousVestingAccount + | DelayedVestingAccount + | PeriodicVestingAccount; /** * Stores information about an account fetched from the blockchain. */ export namespace Account { - export type Amino = BaseAccount.Amino | LazyGradedVestingAccount.Amino; - export type Data = BaseAccount.Data | LazyGradedVestingAccount.Data; + export type Amino = + | BaseAccount.Amino + | BaseVestingAccount.Amino + | LazyGradedVestingAccount.Amino + | ContinuousVestingAccount.Amino + | DelayedVestingAccount.Amino + | PeriodicVestingAccount.Amino; + export type Data = + | BaseAccount.Data + | BaseVestingAccount.Data + | LazyGradedVestingAccount.Data + | ContinuousVestingAccount.Data + | DelayedVestingAccount.Data + | PeriodicVestingAccount.Data; export type Proto = Any; - export function fromAmino(amino: Account.Amino): Account { + export function fromAmino( + amino: Account.Amino, + isClassic?: boolean + ): Account { switch (amino.type) { case 'core/Account': - return BaseAccount.fromAmino(amino); + case 'cosmos-sdk/BaseAccount': + return BaseAccount.fromAmino(amino, isClassic); + case 'core/BaseVestingAccount': + case 'cosmos-sdk/BaseVestingAccount': + return BaseVestingAccount.fromAmino(amino, isClassic); case 'core/LazyGradedVestingAccount': - return LazyGradedVestingAccount.fromAmino(amino); + return LazyGradedVestingAccount.fromAmino(amino, isClassic); + case 'cosmos-sdk/ContinuousVestingAccount': + return ContinuousVestingAccount.fromAmino(amino, isClassic); + case 'cosmos-sdk/DelayedVestingAccount': + return DelayedVestingAccount.fromAmino(amino, isClassic); + case 'cosmos-sdk/PeriodicVestingAccount': + return PeriodicVestingAccount.fromAmino(amino, isClassic); } } - export function fromData(data: Account.Data): Account { + export function fromData(data: Account.Data, isClassic?: boolean): Account { switch (data['@type']) { case '/cosmos.auth.v1beta1.BaseAccount': - return BaseAccount.fromData(data); + return BaseAccount.fromData(data, isClassic); + case '/cosmos.vesting.v1beta1.BaseVestingAccount': + return BaseVestingAccount.fromData(data, isClassic); case '/terra.vesting.v1beta1.LazyGradedVestingAccount': - return LazyGradedVestingAccount.fromData(data); + return LazyGradedVestingAccount.fromData(data, isClassic); + case '/cosmos.vesting.v1beta1.ContinuousVestingAccount': + return ContinuousVestingAccount.fromData(data, isClassic); + case '/cosmos.vesting.v1beta1.DelayedVestingAccount': + return DelayedVestingAccount.fromData(data, isClassic); + case '/cosmos.vesting.v1beta1.PeriodicVestingAccount': + return PeriodicVestingAccount.fromData(data, isClassic); } } - export function fromProto(accountAny: Account.Proto): Account { + export function fromProto( + accountAny: Account.Proto, + isClassic?: boolean + ): Account { const typeUrl = accountAny.typeUrl; if (typeUrl === '/cosmos.auth.v1beta1.BaseAccount') { - return BaseAccount.unpackAny(accountAny); + return BaseAccount.unpackAny(accountAny, isClassic); } else if (typeUrl === '/terra.vesting.v1beta1.LazyGradedVestingAccount') { - return LazyGradedVestingAccount.unpackAny(accountAny); + return LazyGradedVestingAccount.unpackAny(accountAny, isClassic); + } else if (typeUrl === '/cosmos.vesting.v1beta1.ContinuousVestingAccount') { + return ContinuousVestingAccount.unpackAny(accountAny, isClassic); + } else if (typeUrl === '/cosmos.vesting.v1beta1.DelayedVestingAccount') { + return DelayedVestingAccount.unpackAny(accountAny, isClassic); + } else if (typeUrl === '/cosmos.vesting.v1beta1.PeriodicVestingAccount') { + return PeriodicVestingAccount.unpackAny(accountAny, isClassic); } throw new Error(`Account type ${typeUrl} not recognized`); diff --git a/src/core/auth/BaseAccount.spec.ts b/src/core/auth/BaseAccount.spec.ts index eabc73ee0..a77a764f8 100644 --- a/src/core/auth/BaseAccount.spec.ts +++ b/src/core/auth/BaseAccount.spec.ts @@ -4,7 +4,7 @@ import { SimplePublicKey } from '../PublicKey'; const data = require('./BaseAccount.data.json'); describe('Account', () => { - it('deserializes accounts correctly', () => { + it('legacy deserializes accounts correctly', () => { const data: BaseAccount.Amino = { type: 'core/Account', value: { @@ -26,10 +26,10 @@ describe('Account', () => { account_number: 251248, sequence: 58, }); - expect(acct.toAmino()).toMatchObject(data); + expect(acct.toAmino(true)).toMatchObject(data); }); - it('deserializes a new account correctly', () => { + it('legacy deserializes a new account correctly', () => { // a new account does not yet have a public key const newAccount: BaseAccount.Amino = { type: 'core/Account', @@ -41,12 +41,12 @@ describe('Account', () => { }, }; - expect(BaseAccount.fromAmino(newAccount).toAmino()).toMatchObject( + expect(BaseAccount.fromAmino(newAccount).toAmino(true)).toMatchObject( newAccount ); }); - it('serializes accounts correctly', () => { + it('legacy serializes accounts correctly', () => { const acct = new BaseAccount( 'terra12fm3tql2uu0gheuj3st9cwz7ml97tq9mla88c2', new SimplePublicKey('abc'), @@ -54,7 +54,7 @@ describe('Account', () => { 58 ); - expect(acct.toAmino()).toMatchObject({ + expect(acct.toAmino(true)).toMatchObject({ type: 'core/Account', value: { address: 'terra12fm3tql2uu0gheuj3st9cwz7ml97tq9mla88c2', @@ -68,9 +68,9 @@ describe('Account', () => { }); }); - it('deserializes from example data', () => { + it('legacy deserializes from example data', () => { data.forEach((ex: BaseAccount.Amino) => { - expect(BaseAccount.fromAmino(ex).toAmino()).toMatchObject(ex); + expect(BaseAccount.fromAmino(ex).toAmino(true)).toMatchObject(ex); }); }); }); diff --git a/src/core/auth/BaseAccount.ts b/src/core/auth/BaseAccount.ts index fb5bfb1fc..643c46b73 100644 --- a/src/core/auth/BaseAccount.ts +++ b/src/core/auth/BaseAccount.ts @@ -1,6 +1,8 @@ import { PublicKey } from '../PublicKey'; import { JSONSerializable } from '../../util/json'; import { AccAddress } from '../bech32'; +// import { BaseAccount as BaseAccount_pb } from '@terra-money/legacy.proto/cosmos/auth/v1beta1/auth'; +// import { Any } from '@terra-money/legacy.proto/google/protobuf/any'; import { BaseAccount as BaseAccount_pb } from '@terra-money/terra.proto/cosmos/auth/v1beta1/auth'; import { Any } from '@terra-money/terra.proto/google/protobuf/any'; import * as Long from 'long'; @@ -17,7 +19,6 @@ export class BaseAccount extends JSONSerializable< * Creates a new Account object, holding information about a basic account. * * @param address account address - * @param coins account's balance * @param public_key account's public key information * @param account_number account number on the blockchain * @param sequence sequence number, or number of transactions that have been posted @@ -43,10 +44,10 @@ export class BaseAccount extends JSONSerializable< return this.public_key; } - public toAmino(): BaseAccount.Amino { + public toAmino(isClassic?: boolean): BaseAccount.Amino { const { address, public_key, account_number, sequence } = this; return { - type: 'core/Account', + type: isClassic ? 'core/Account' : 'cosmos-sdk/BaseAccount', value: { address, public_key: public_key ? public_key.toAmino() : null, @@ -56,7 +57,8 @@ export class BaseAccount extends JSONSerializable< }; } - public static fromAmino(data: BaseAccount.Amino): BaseAccount { + public static fromAmino(data: BaseAccount.Amino, _?: boolean): BaseAccount { + _; const { value: { address, public_key, account_number, sequence }, } = data; @@ -69,7 +71,8 @@ export class BaseAccount extends JSONSerializable< ); } - public static fromData(data: BaseAccount.Data): BaseAccount { + public static fromData(data: BaseAccount.Data, _?: boolean): BaseAccount { + _; const { address, pub_key, account_number, sequence } = data; return new BaseAccount( @@ -80,7 +83,8 @@ export class BaseAccount extends JSONSerializable< ); } - public toData(): BaseAccount.Data { + public toData(_?: boolean): BaseAccount.Data { + _; const { address, public_key, account_number, sequence } = this; return { '@type': '/cosmos.auth.v1beta1.BaseAccount', @@ -91,7 +95,8 @@ export class BaseAccount extends JSONSerializable< }; } - public toProto(): BaseAccount.Proto { + public toProto(_?: boolean): BaseAccount.Proto { + _; const { address, public_key, account_number, sequence } = this; return BaseAccount_pb.fromPartial({ address, @@ -101,7 +106,11 @@ export class BaseAccount extends JSONSerializable< }); } - public static fromProto(baseAccountProto: BaseAccount.Proto): BaseAccount { + public static fromProto( + baseAccountProto: BaseAccount.Proto, + _?: boolean + ): BaseAccount { + _; const pubkey = baseAccountProto.pubKey; return new BaseAccount( baseAccountProto.address, @@ -111,14 +120,16 @@ export class BaseAccount extends JSONSerializable< ); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/cosmos.auth.v1beta1.BaseAccount', value: BaseAccount_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(pubkeyAny: Any): BaseAccount { + public static unpackAny(pubkeyAny: Any, _?: boolean): BaseAccount { + _; return BaseAccount.fromProto(BaseAccount_pb.decode(pubkeyAny.value)); } } @@ -132,7 +143,7 @@ export namespace BaseAccount { } export interface Amino { - type: 'core/Account'; + type: 'core/Account' | 'cosmos-sdk/BaseAccount'; value: AminoValue; } diff --git a/src/core/auth/BaseVestingAccount.ts b/src/core/auth/BaseVestingAccount.ts index 6c690d414..27c89fef5 100644 --- a/src/core/auth/BaseVestingAccount.ts +++ b/src/core/auth/BaseVestingAccount.ts @@ -16,12 +16,11 @@ export class BaseVestingAccount extends JSONSerializable< > { /** * - * @param BaseAccount account information + * @param base_account account information * @param original_vesting initial vesting amount * @param delegated_free * @param delegated_vesting - * @param end_time -not used- - * @param vesting_schedules Entries that make up vesting + * @param end_time */ constructor( public base_account: BaseAccount, @@ -45,8 +44,7 @@ export class BaseVestingAccount extends JSONSerializable< return this.base_account.public_key; } - public toAmino(): BaseVestingAccount.Amino { - undefined; + public toAmino(isClassic?: boolean): BaseVestingAccount.Amino { const { base_account, original_vesting, @@ -56,7 +54,9 @@ export class BaseVestingAccount extends JSONSerializable< } = this; return { - type: 'core/BaseVestingAccount', + type: isClassic + ? 'core/BaseVestingAccount' + : 'cosmos-sdk/BaseVestingAccount', value: { base_account: base_account.toAmino().value, delegated_free: delegated_free.toAmino(), @@ -67,9 +67,12 @@ export class BaseVestingAccount extends JSONSerializable< }; } - public static fromAmino(amino: BaseVestingAccount.Amino): BaseVestingAccount { + public static fromAmino( + amino: BaseVestingAccount.Amino, + isClassic?: boolean + ): BaseVestingAccount { const base_account = BaseAccount.fromAmino({ - type: 'core/Account', + type: isClassic ? 'core/Account' : 'cosmos-sdk/BaseAccount', value: amino.value.base_account, }); @@ -82,7 +85,8 @@ export class BaseVestingAccount extends JSONSerializable< ); } - public toData(): BaseVestingAccount.Data { + public toData(_?: boolean): BaseVestingAccount.Data { + _; const { base_account, original_vesting, @@ -92,7 +96,7 @@ export class BaseVestingAccount extends JSONSerializable< } = this; return { - '@type': '/terra.vesting.v1beta1.LazyGradedVestingAccount', + '@type': '/cosmos.vesting.v1beta1.BaseVestingAccount', base_account: base_account.toData(), delegated_free: delegated_free.toData(), delegated_vesting: delegated_vesting.toData(), @@ -101,7 +105,11 @@ export class BaseVestingAccount extends JSONSerializable< }; } - public static fromData(data: BaseVestingAccount.Data): BaseVestingAccount { + public static fromData( + data: BaseVestingAccount.Data, + _?: boolean + ): BaseVestingAccount { + _; const base_account = BaseAccount.fromData({ '@type': '/cosmos.auth.v1beta1.BaseAccount', ...data.base_account, @@ -116,7 +124,8 @@ export class BaseVestingAccount extends JSONSerializable< ); } - public toProto(): BaseVestingAccount.Proto { + public toProto(_?: boolean): BaseVestingAccount.Proto { + _; const { base_account, original_vesting, @@ -134,7 +143,11 @@ export class BaseVestingAccount extends JSONSerializable< }); } - public static fromProto(proto: BaseVestingAccount.Proto): BaseVestingAccount { + public static fromProto( + proto: BaseVestingAccount.Proto, + _?: boolean + ): BaseVestingAccount { + _; const baseAccount = BaseAccount.fromProto( proto.baseAccount as BaseAccount_pb ); @@ -159,7 +172,7 @@ export namespace BaseVestingAccount { } export interface Amino { - type: 'core/BaseVestingAccount'; + type: 'core/BaseVestingAccount' | 'cosmos-sdk/BaseVestingAccount'; value: AminoValue; } @@ -172,7 +185,7 @@ export namespace BaseVestingAccount { } export interface Data extends DataValue { - '@type': '/terra.vesting.v1beta1.LazyGradedVestingAccount'; + '@type': '/cosmos.vesting.v1beta1.BaseVestingAccount'; } export type Proto = BaseVestingAccount_pb; diff --git a/src/core/auth/ContinuousVestingAccount.spec.ts b/src/core/auth/ContinuousVestingAccount.spec.ts new file mode 100644 index 000000000..1cea6522e --- /dev/null +++ b/src/core/auth/ContinuousVestingAccount.spec.ts @@ -0,0 +1,57 @@ +import { ContinuousVestingAccount } from './ContinuousVestingAccount'; + +describe('ContinuousVestingAccount', () => { + it('deserializes correctly', () => { + const acct = ContinuousVestingAccount.fromAmino({ + type: 'cosmos-sdk/ContinuousVestingAccount', + value: { + base_vesting_account: { + base_account: { + address: 'terra1ucp369yry6n70qq3zaxyt85cnug75r7ln8l6se', + public_key: null, + account_number: '0', + sequence: '0', + }, + original_vesting: [ + { + denom: 'uluna', + amount: '10000000000', + }, + ], + delegated_free: [], + delegated_vesting: [], + end_time: '1654000000', + }, + start_time: '1652000000', + }, + }); + + expect(acct.toAmino()).toMatchObject({ + type: 'cosmos-sdk/ContinuousVestingAccount', + value: { + base_vesting_account: { + base_account: { + address: 'terra1ucp369yry6n70qq3zaxyt85cnug75r7ln8l6se', + public_key: null, + account_number: '0', + sequence: '0', + }, + original_vesting: [ + { + denom: 'uluna', + amount: '10000000000', + }, + ], + delegated_free: [], + delegated_vesting: [], + end_time: '1654000000', + }, + start_time: '1652000000', + }, + }); + + expect(() => acct.toAmino(true)).toThrow( + Error('Net supported for the network') + ); + }); +}); diff --git a/src/core/auth/ContinuousVestingAccount.ts b/src/core/auth/ContinuousVestingAccount.ts new file mode 100644 index 000000000..1415036e2 --- /dev/null +++ b/src/core/auth/ContinuousVestingAccount.ts @@ -0,0 +1,172 @@ +import { JSONSerializable } from '../../util/json'; +import { BaseVestingAccount } from './BaseVestingAccount'; +import * as Long from 'long'; +import { PublicKey } from '../PublicKey'; + +import { BaseVestingAccount as BaseVestingAccount_pb } from '@terra-money/terra.proto/cosmos/vesting/v1beta1/vesting'; +import { ContinuousVestingAccount as ContinuousVestingAccount_pb } from '@terra-money/terra.proto/cosmos/vesting/v1beta1/vesting'; +import { Any } from '@terra-money/terra.proto/google/protobuf/any'; + +/** + * ContinuousVestingAccount implements the VestingAccount interface. It + * continuously vests by unlocking coins linearly with respect to time. + */ +export class ContinuousVestingAccount extends JSONSerializable< + ContinuousVestingAccount.Amino, + ContinuousVestingAccount.Data, + ContinuousVestingAccount.Proto +> { + /** + * + * @param base_vesting_account account information + * @param start_time vesting start time + */ + constructor( + public base_vesting_account: BaseVestingAccount, + public start_time: number + ) { + super(); + } + + public getAccountNumber(): number { + return this.base_vesting_account.getAccountNumber(); + } + + public getSequenceNumber(): number { + return this.base_vesting_account.getSequenceNumber(); + } + + public getPublicKey(): PublicKey | null { + return this.base_vesting_account.base_account.public_key; + } + + public toAmino(isClassic?: boolean): ContinuousVestingAccount.Amino { + if (isClassic) { + throw new Error('Net supported for the network'); + } + const { base_vesting_account, start_time } = this; + return { + type: 'cosmos-sdk/ContinuousVestingAccount', + value: { + base_vesting_account: base_vesting_account.toAmino().value, + start_time: start_time.toFixed(), + }, + }; + } + + public static fromAmino( + data: ContinuousVestingAccount.Amino, + isClassic?: boolean + ): ContinuousVestingAccount { + const base_vesting_account = BaseVestingAccount.fromAmino({ + type: 'cosmos-sdk/BaseVestingAccount', + value: data.value.base_vesting_account, + }); + if (isClassic) { + throw new Error('Net supported for the network'); + } + return new ContinuousVestingAccount( + base_vesting_account, + Number.parseInt(data.value.start_time) + ); + } + + public toData(isClassic?: boolean): ContinuousVestingAccount.Data { + if (isClassic) { + throw new Error('Net supported for the network'); + } + const { base_vesting_account, start_time } = this; + return { + '@type': '/cosmos.vesting.v1beta1.ContinuousVestingAccount', + base_vesting_account: base_vesting_account.toData(), + start_time: start_time.toFixed(), + }; + } + + public static fromData( + data: ContinuousVestingAccount.Data, + isClassic?: boolean + ): ContinuousVestingAccount { + if (isClassic) { + throw new Error('Net supported for the network'); + } + const base_vesting_account = BaseVestingAccount.fromData({ + '@type': '/cosmos.vesting.v1beta1.BaseVestingAccount', + ...data.base_vesting_account, + }); + + return new ContinuousVestingAccount( + base_vesting_account, + Number.parseInt(data.start_time) + ); + } + + public toProto(isClassic?: boolean): ContinuousVestingAccount.Proto { + if (isClassic) { + throw new Error('Net supported for the network'); + } + const { base_vesting_account, start_time } = this; + + return ContinuousVestingAccount_pb.fromPartial({ + baseVestingAccount: base_vesting_account.toProto(), + startTime: Long.fromNumber(start_time), + }); + } + + public static fromProto( + ContinuousVestingAccountProto: ContinuousVestingAccount.Proto, + isClassic?: boolean + ): ContinuousVestingAccount { + if (isClassic) { + throw new Error('Net supported for the network'); + } + const baseVestingAccount = BaseVestingAccount.fromProto( + ContinuousVestingAccountProto.baseVestingAccount as BaseVestingAccount_pb + ); + + return new ContinuousVestingAccount( + baseVestingAccount, + ContinuousVestingAccountProto.startTime.toNumber() + ); + } + + public packAny(isClassic?: boolean): Any { + if (isClassic) { + throw new Error('Net supported for the network'); + } + return Any.fromPartial({ + typeUrl: '/cosmos.vesting.v1beta1.ContinuousVestingAccount', + value: ContinuousVestingAccount_pb.encode(this.toProto()).finish(), + }); + } + + public static unpackAny( + pubkeyAny: Any, + isClassic?: boolean + ): ContinuousVestingAccount { + if (isClassic) { + throw new Error('Net supported for the network'); + } + return ContinuousVestingAccount.fromProto( + ContinuousVestingAccount_pb.decode(pubkeyAny.value) + ); + } +} + +export namespace ContinuousVestingAccount { + export interface Amino { + type: 'cosmos-sdk/ContinuousVestingAccount'; + value: { + base_vesting_account: BaseVestingAccount.AminoValue; + start_time: string; + }; + } + + export interface Data { + '@type': '/cosmos.vesting.v1beta1.ContinuousVestingAccount'; + base_vesting_account: BaseVestingAccount.DataValue; + start_time: string; + } + + export type Proto = ContinuousVestingAccount_pb; +} diff --git a/src/core/auth/DelayedVestingAccount.spec.ts b/src/core/auth/DelayedVestingAccount.spec.ts new file mode 100644 index 000000000..ad113a1d3 --- /dev/null +++ b/src/core/auth/DelayedVestingAccount.spec.ts @@ -0,0 +1,55 @@ +import { DelayedVestingAccount } from './DelayedVestingAccount'; + +describe('DelayedVestingAccount', () => { + it('deserializes correctly', () => { + const acct = DelayedVestingAccount.fromAmino({ + type: 'cosmos-sdk/DelayedVestingAccount', + value: { + base_vesting_account: { + base_account: { + address: 'terra1ucp369yry6n70qq3zaxyt85cnug75r7ln8l6se', + public_key: null, + account_number: '0', + sequence: '0', + }, + original_vesting: [ + { + denom: 'uluna', + amount: '10000000000', + }, + ], + delegated_free: [], + delegated_vesting: [], + end_time: '1654000000', + }, + }, + }); + + expect(acct.toAmino()).toMatchObject({ + type: 'cosmos-sdk/DelayedVestingAccount', + value: { + base_vesting_account: { + base_account: { + address: 'terra1ucp369yry6n70qq3zaxyt85cnug75r7ln8l6se', + public_key: null, + account_number: '0', + sequence: '0', + }, + original_vesting: [ + { + denom: 'uluna', + amount: '10000000000', + }, + ], + delegated_free: [], + delegated_vesting: [], + end_time: '1654000000', + }, + }, + }); + + expect(() => acct.toAmino(true)).toThrow( + Error('Net supported for the network') + ); + }); +}); diff --git a/src/core/auth/DelayedVestingAccount.ts b/src/core/auth/DelayedVestingAccount.ts new file mode 100644 index 000000000..bab391625 --- /dev/null +++ b/src/core/auth/DelayedVestingAccount.ts @@ -0,0 +1,152 @@ +import { JSONSerializable } from '../../util/json'; +import { BaseVestingAccount } from './BaseVestingAccount'; +import { PublicKey } from '../PublicKey'; + +import { BaseVestingAccount as BaseVestingAccount_pb } from '@terra-money/terra.proto/cosmos/vesting/v1beta1/vesting'; +import { DelayedVestingAccount as DelayedVestingAccount_pb } from '@terra-money/terra.proto/cosmos/vesting/v1beta1/vesting'; +import { Any } from '@terra-money/terra.proto/google/protobuf/any'; + +/** + * DelayedVestingAccount implements the VestingAccount interface. It vests all + * coins after a specific time, but non prior. In other words, it keeps them + * locked until a specified time. + */ +export class DelayedVestingAccount extends JSONSerializable< + DelayedVestingAccount.Amino, + DelayedVestingAccount.Data, + DelayedVestingAccount.Proto +> { + /** + * + * @param base_vesting_account account information + */ + constructor(public base_vesting_account: BaseVestingAccount) { + super(); + } + + public getAccountNumber(): number { + return this.base_vesting_account.getAccountNumber(); + } + + public getSequenceNumber(): number { + return this.base_vesting_account.getSequenceNumber(); + } + + public getPublicKey(): PublicKey | null { + return this.base_vesting_account.base_account.public_key; + } + + public toAmino(isClassic?: boolean): DelayedVestingAccount.Amino { + if (isClassic) { + throw new Error('Net supported for the network'); + } + const { base_vesting_account } = this; + return { + type: 'cosmos-sdk/DelayedVestingAccount', + value: { + base_vesting_account: base_vesting_account.toAmino().value, + }, + }; + } + + public static fromAmino( + data: DelayedVestingAccount.Amino, + isClassic?: boolean + ): DelayedVestingAccount { + const base_vesting_account = BaseVestingAccount.fromAmino({ + type: 'cosmos-sdk/BaseVestingAccount', + value: data.value.base_vesting_account, + }); + if (isClassic) { + throw new Error('Net supported for the network'); + } + return new DelayedVestingAccount(base_vesting_account); + } + + public toData(isClassic?: boolean): DelayedVestingAccount.Data { + if (isClassic) { + throw new Error('Net supported for the network'); + } + const { base_vesting_account } = this; + return { + '@type': '/cosmos.vesting.v1beta1.DelayedVestingAccount', + base_vesting_account: base_vesting_account.toData(), + }; + } + + public static fromData( + data: DelayedVestingAccount.Data, + isClassic?: boolean + ): DelayedVestingAccount { + const base_vesting_account = BaseVestingAccount.fromData({ + '@type': '/cosmos.vesting.v1beta1.BaseVestingAccount', + ...data.base_vesting_account, + }); + if (isClassic) { + throw new Error('Net supported for the network'); + } + return new DelayedVestingAccount(base_vesting_account); + } + + public toProto(isClassic?: boolean): DelayedVestingAccount.Proto { + if (isClassic) { + throw new Error('Net supported for the network'); + } + const { base_vesting_account } = this; + + return DelayedVestingAccount_pb.fromPartial({ + baseVestingAccount: base_vesting_account.toProto(), + }); + } + + public static fromProto( + DelayedVestingAccountProto: DelayedVestingAccount.Proto, + isClassic?: boolean + ): DelayedVestingAccount { + const baseVestingAccount = BaseVestingAccount.fromProto( + DelayedVestingAccountProto.baseVestingAccount as BaseVestingAccount_pb + ); + if (isClassic) { + throw new Error('Net supported for the network'); + } + return new DelayedVestingAccount(baseVestingAccount); + } + + public packAny(isClassic?: boolean): Any { + if (isClassic) { + throw new Error('Net supported for the network'); + } + return Any.fromPartial({ + typeUrl: '/cosmos.vesting.v1beta1.DelayedVestingAccount', + value: DelayedVestingAccount_pb.encode(this.toProto()).finish(), + }); + } + + public static unpackAny( + pubkeyAny: Any, + isClassic?: boolean + ): DelayedVestingAccount { + if (isClassic) { + throw new Error('Net supported for the network'); + } + return DelayedVestingAccount.fromProto( + DelayedVestingAccount_pb.decode(pubkeyAny.value) + ); + } +} + +export namespace DelayedVestingAccount { + export interface Amino { + type: 'cosmos-sdk/DelayedVestingAccount'; + value: { + base_vesting_account: BaseVestingAccount.AminoValue; + }; + } + + export interface Data { + '@type': '/cosmos.vesting.v1beta1.DelayedVestingAccount'; + base_vesting_account: BaseVestingAccount.DataValue; + } + + export type Proto = DelayedVestingAccount_pb; +} diff --git a/src/core/auth/LazyGradedVestingAccount.ts b/src/core/auth/LazyGradedVestingAccount.ts index fe790951f..8f41c0499 100644 --- a/src/core/auth/LazyGradedVestingAccount.ts +++ b/src/core/auth/LazyGradedVestingAccount.ts @@ -2,13 +2,13 @@ import { Denom } from '../Denom'; import { JSONSerializable } from '../../util/json'; import { BaseVestingAccount } from './BaseVestingAccount'; import { Dec } from '../numeric'; -import { BaseVestingAccount as BaseVestingAccount_pb } from '@terra-money/terra.proto/cosmos/vesting/v1beta1/vesting'; +import { BaseVestingAccount as BaseVestingAccount_pb } from '@terra-money/legacy.proto/cosmos/vesting/v1beta1/vesting'; import { LazyGradedVestingAccount as LazyGradedVestingAccount_pb, Schedule as Schedule_pb, VestingSchedule as VestingSchedule_pb, -} from '@terra-money/terra.proto/terra/vesting/v1beta1/vesting'; -import { Any } from '@terra-money/terra.proto/google/protobuf/any'; +} from '@terra-money/legacy.proto/terra/vesting/v1beta1/vesting'; +import { Any } from '@terra-money/legacy.proto/google/protobuf/any'; import * as Long from 'long'; import { PublicKey } from '../PublicKey'; @@ -44,7 +44,8 @@ export class LazyGradedVestingAccount extends JSONSerializable< return this.base_vesting_account.base_account.public_key; } - public toAmino(): LazyGradedVestingAccount.Amino { + public toAmino(_?: boolean): LazyGradedVestingAccount.Amino { + _; const { base_vesting_account, vesting_schedules } = this; return { type: 'core/LazyGradedVestingAccount', @@ -56,8 +57,10 @@ export class LazyGradedVestingAccount extends JSONSerializable< } public static fromAmino( - data: LazyGradedVestingAccount.Amino + data: LazyGradedVestingAccount.Amino, + _?: boolean ): LazyGradedVestingAccount { + _; const base_vesting_account = BaseVestingAccount.fromAmino({ type: 'core/BaseVestingAccount', value: data.value.base_vesting_account, @@ -71,7 +74,8 @@ export class LazyGradedVestingAccount extends JSONSerializable< ); } - public toData(): LazyGradedVestingAccount.Data { + public toData(_?: boolean): LazyGradedVestingAccount.Data { + _; const { base_vesting_account, vesting_schedules } = this; return { '@type': '/terra.vesting.v1beta1.LazyGradedVestingAccount', @@ -81,10 +85,12 @@ export class LazyGradedVestingAccount extends JSONSerializable< } public static fromData( - data: LazyGradedVestingAccount.Data + data: LazyGradedVestingAccount.Data, + _?: boolean ): LazyGradedVestingAccount { + _; const base_vesting_account = BaseVestingAccount.fromData({ - '@type': '/terra.vesting.v1beta1.LazyGradedVestingAccount', + '@type': '/cosmos.vesting.v1beta1.BaseVestingAccount', ...data.base_vesting_account, }); @@ -96,7 +102,8 @@ export class LazyGradedVestingAccount extends JSONSerializable< ); } - public toProto(): LazyGradedVestingAccount.Proto { + public toProto(_?: boolean): LazyGradedVestingAccount.Proto { + _; const { base_vesting_account, vesting_schedules } = this; return LazyGradedVestingAccount_pb.fromPartial({ @@ -106,8 +113,10 @@ export class LazyGradedVestingAccount extends JSONSerializable< } public static fromProto( - lazyGradedVestingAccountProto: LazyGradedVestingAccount.Proto + lazyGradedVestingAccountProto: LazyGradedVestingAccount.Proto, + _?: boolean ): LazyGradedVestingAccount { + _; const baseVestingAccount = BaseVestingAccount.fromProto( lazyGradedVestingAccountProto.baseVestingAccount as BaseVestingAccount_pb ); @@ -120,14 +129,19 @@ export class LazyGradedVestingAccount extends JSONSerializable< ); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/terra.vesting.v1beta1.LazyGradedVestingAccount', value: LazyGradedVestingAccount_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(pubkeyAny: Any): LazyGradedVestingAccount { + public static unpackAny( + pubkeyAny: Any, + _?: boolean + ): LazyGradedVestingAccount { + _; return LazyGradedVestingAccount.fromProto( LazyGradedVestingAccount_pb.decode(pubkeyAny.value) ); diff --git a/src/core/auth/PeriodicVestingAccount.spec.ts b/src/core/auth/PeriodicVestingAccount.spec.ts new file mode 100644 index 000000000..f24509d7c --- /dev/null +++ b/src/core/auth/PeriodicVestingAccount.spec.ts @@ -0,0 +1,107 @@ +import { PeriodicVestingAccount } from './PeriodicVestingAccount'; + +describe('PeriodicVestingAccount', () => { + it('deserializes correctly', () => { + const acct = PeriodicVestingAccount.fromAmino({ + type: 'cosmos-sdk/PeriodicVestingAccount', + value: { + base_vesting_account: { + base_account: { + address: 'terra1upg95nlwkfkrq4hhjrn3k9s6ud0aqx36gwnlsn', + public_key: null, + account_number: '684082', + sequence: '0', + }, + original_vesting: [ + { + denom: 'uluna', + amount: '5000000000000', + }, + ], + delegated_free: [], + delegated_vesting: [ + { + denom: 'uluna', + amount: '1338029091449', + }, + ], + end_time: '1654000000', + }, + start_time: '1653000000', + vesting_periods: [ + { + length: '500000', + amount: [ + { + denom: 'uluna', + amount: '5000000000', + }, + ], + }, + { + length: '500000', + amount: [ + { + denom: 'uluna', + amount: '5000000000', + }, + ], + }, + ], + }, + }); + + expect(acct.toAmino()).toMatchObject({ + type: 'cosmos-sdk/PeriodicVestingAccount', + value: { + base_vesting_account: { + base_account: { + address: 'terra1upg95nlwkfkrq4hhjrn3k9s6ud0aqx36gwnlsn', + public_key: null, + account_number: '684082', + sequence: '0', + }, + original_vesting: [ + { + denom: 'uluna', + amount: '5000000000000', + }, + ], + delegated_free: [], + delegated_vesting: [ + { + denom: 'uluna', + amount: '1338029091449', + }, + ], + end_time: '1654000000', + }, + start_time: '1653000000', + vesting_periods: [ + { + length: '500000', + amount: [ + { + denom: 'uluna', + amount: '5000000000', + }, + ], + }, + { + length: '500000', + amount: [ + { + denom: 'uluna', + amount: '5000000000', + }, + ], + }, + ], + }, + }); + + expect(() => acct.toAmino(true)).toThrow( + Error('Net supported for the network') + ); + }); +}); diff --git a/src/core/auth/PeriodicVestingAccount.ts b/src/core/auth/PeriodicVestingAccount.ts new file mode 100644 index 000000000..5507bb6d9 --- /dev/null +++ b/src/core/auth/PeriodicVestingAccount.ts @@ -0,0 +1,247 @@ +import { JSONSerializable } from '../../util/json'; +import { BaseVestingAccount } from './BaseVestingAccount'; +import { Coins } from '../Coins'; +import { BaseVestingAccount as BaseVestingAccount_pb } from '@terra-money/terra.proto/cosmos/vesting/v1beta1/vesting'; +import { + PeriodicVestingAccount as PeriodicVestingAccount_pb, + Period as Period_pb, +} from '@terra-money/terra.proto/cosmos/vesting/v1beta1/vesting'; +import { Any } from '@terra-money/terra.proto/google/protobuf/any'; +import * as Long from 'long'; +import { PublicKey } from '../PublicKey'; + +/** + * PeriodicVestingAccount implements the VestingAccount interface. It + * periodically vests by unlocking coins during each specified period. + */ +export class PeriodicVestingAccount extends JSONSerializable< + PeriodicVestingAccount.Amino, + PeriodicVestingAccount.Data, + PeriodicVestingAccount.Proto +> { + /** + * + * @param base_vesting_account account information + * @param start_time vesting start time + * @param vesting_periods vesting period entries + */ + constructor( + public base_vesting_account: BaseVestingAccount, + public start_time: number, + public vesting_periods: PeriodicVestingAccount.Period[] + ) { + super(); + } + + public getAccountNumber(): number { + return this.base_vesting_account.getAccountNumber(); + } + + public getSequenceNumber(): number { + return this.base_vesting_account.getSequenceNumber(); + } + + public getPublicKey(): PublicKey | null { + return this.base_vesting_account.base_account.public_key; + } + + public toAmino(isClassic?: boolean): PeriodicVestingAccount.Amino { + if (isClassic) { + throw new Error('Net supported for the network'); + } + const { base_vesting_account, start_time, vesting_periods } = this; + return { + type: 'cosmos-sdk/PeriodicVestingAccount', + value: { + base_vesting_account: base_vesting_account.toAmino().value, + start_time: start_time.toFixed(), + vesting_periods: vesting_periods.map(vs => vs.toAmino()), + }, + }; + } + + public static fromAmino( + data: PeriodicVestingAccount.Amino, + isClassic?: boolean + ): PeriodicVestingAccount { + const base_vesting_account = BaseVestingAccount.fromAmino({ + type: 'cosmos-sdk/BaseVestingAccount', + value: data.value.base_vesting_account, + }); + if (isClassic) { + throw new Error('Net supported for the network'); + } + + return new PeriodicVestingAccount( + base_vesting_account, + Number.parseInt(data.value.start_time), + data.value.vesting_periods.map(vs => + PeriodicVestingAccount.Period.fromAmino(vs) + ) + ); + } + + public toData(isClassic?: boolean): PeriodicVestingAccount.Data { + if (isClassic) { + throw new Error('Net supported for the network'); + } + const { base_vesting_account, start_time, vesting_periods } = this; + return { + '@type': '/cosmos.vesting.v1beta1.PeriodicVestingAccount', + base_vesting_account: base_vesting_account.toData(), + start_time: start_time.toFixed(), + vesting_periods: vesting_periods.map(vs => vs.toData()), + }; + } + + public static fromData( + data: PeriodicVestingAccount.Data, + isClassic?: boolean + ): PeriodicVestingAccount { + const base_vesting_account = BaseVestingAccount.fromData({ + '@type': '/cosmos.vesting.v1beta1.BaseVestingAccount', + ...data.base_vesting_account, + }); + if (isClassic) { + throw new Error('Net supported for the network'); + } + return new PeriodicVestingAccount( + base_vesting_account, + Number.parseInt(data.start_time), + data.vesting_periods.map(vs => PeriodicVestingAccount.Period.fromData(vs)) + ); + } + + public toProto(isClassic?: boolean): PeriodicVestingAccount.Proto { + if (isClassic) { + throw new Error('Net supported for the network'); + } + const { base_vesting_account, vesting_periods } = this; + + return PeriodicVestingAccount_pb.fromPartial({ + baseVestingAccount: base_vesting_account.toProto(), + vestingPeriods: vesting_periods.map(s => s.toProto()), + }); + } + + public static fromProto( + proto: PeriodicVestingAccount.Proto, + isClassic?: boolean + ): PeriodicVestingAccount { + if (isClassic) { + throw new Error('Net supported for the network'); + } + const baseVestingAccount = BaseVestingAccount.fromProto( + proto.baseVestingAccount as BaseVestingAccount_pb + ); + + return new PeriodicVestingAccount( + baseVestingAccount, + proto.startTime.toNumber(), + proto.vestingPeriods.map(s => this.Period.fromProto(s)) + ); + } + + public packAny(isClassic?: boolean): Any { + if (isClassic) { + throw new Error('Net supported for the network'); + } + return Any.fromPartial({ + typeUrl: '/cosmos.vesting.v1beta1.PeriodicVestingAccount', + value: PeriodicVestingAccount_pb.encode(this.toProto()).finish(), + }); + } + + public static unpackAny( + pubkeyAny: Any, + isClassic?: boolean + ): PeriodicVestingAccount { + if (isClassic) { + throw new Error('Net supported for the network'); + } + return PeriodicVestingAccount.fromProto( + PeriodicVestingAccount_pb.decode(pubkeyAny.value) + ); + } +} + +export namespace PeriodicVestingAccount { + export interface Amino { + type: 'cosmos-sdk/PeriodicVestingAccount'; + value: { + base_vesting_account: BaseVestingAccount.AminoValue; + start_time: string; + vesting_periods: Period.Amino[]; + }; + } + + export interface Data { + '@type': '/cosmos.vesting.v1beta1.PeriodicVestingAccount'; + base_vesting_account: BaseVestingAccount.DataValue; + start_time: string; + vesting_periods: Period.Data[]; + } + + export type Proto = PeriodicVestingAccount_pb; + + export class Period extends JSONSerializable< + Period.Amino, + Period.Data, + Period.Proto + > { + constructor(public length: number, public amount: Coins) { + super(); + } + public toAmino(): Period.Amino { + const { length, amount } = this; + return { + length: length.toFixed(), + amount: amount.toAmino(), + }; + } + + public static fromAmino(data: Period.Amino): Period { + const { length, amount } = data; + return new Period(Number.parseInt(length), Coins.fromAmino(amount)); + } + + public toData(): Period.Data { + const { length, amount } = this; + return { + length: length.toFixed(), + amount: amount.toData(), + }; + } + + public static fromData(data: Period.Data): Period { + const { length, amount } = data; + return new Period(Number.parseInt(length), Coins.fromData(amount)); + } + + public toProto(): Period.Proto { + const { length, amount } = this; + return Period_pb.fromPartial({ + length: Long.fromNumber(length), + amount: amount.toProto(), + }); + } + + public static fromProto(proto: Period.Proto): Period { + return new Period(proto.length.toNumber(), Coins.fromProto(proto.amount)); + } + } + + export namespace Period { + export interface Amino { + length: string; + amount: Coins.Amino; + } + + export interface Data { + length: string; + amount: Coins.Amino; + } + + export type Proto = Period_pb; + } +} diff --git a/src/core/auth/index.ts b/src/core/auth/index.ts index 3eeed7353..47c403e06 100644 --- a/src/core/auth/index.ts +++ b/src/core/auth/index.ts @@ -3,10 +3,15 @@ import { LazyGradedVestingAccount } from './LazyGradedVestingAccount'; export * from './Account'; export * from './BaseAccount'; +export * from './BaseVestingAccount'; export * from './LazyGradedVestingAccount'; +export * from './ContinuousVestingAccount'; +export * from './DelayedVestingAccount'; +export * from './PeriodicVestingAccount'; -export function isVesting( - account: Account -): account is LazyGradedVestingAccount { - return account instanceof LazyGradedVestingAccount; -} +// ToDo : check whether used or not +// export function isVesting( +// account: Account +// ): account is LazyGradedVestingAccount { +// return account instanceof LazyGradedVestingAccount; +// } diff --git a/src/core/authz/authorizations/Authorization.ts b/src/core/authz/authorizations/Authorization.ts index 0f4552660..eb764c599 100644 --- a/src/core/authz/authorizations/Authorization.ts +++ b/src/core/authz/authorizations/Authorization.ts @@ -14,49 +14,58 @@ export class AuthorizationGrant extends JSONSerializable< super(); } - public static fromAmino(amino: AuthorizationGrant.Amino): AuthorizationGrant { + public static fromAmino( + amino: AuthorizationGrant.Amino, + isClassic?: boolean + ): AuthorizationGrant { const { authorization, expiration } = amino; return new AuthorizationGrant( - Authorization.fromAmino(authorization), + Authorization.fromAmino(authorization, isClassic), new Date(expiration) ); } - public toAmino(): AuthorizationGrant.Amino { + public toAmino(isClassic?: boolean): AuthorizationGrant.Amino { const { authorization, expiration } = this; return { - authorization: authorization.toAmino(), + authorization: authorization.toAmino(isClassic), expiration: expiration.toISOString().replace(/\.000Z$/, 'Z'), }; } - public static fromData(data: AuthorizationGrant.Data): AuthorizationGrant { + public static fromData( + data: AuthorizationGrant.Data, + isClassic?: boolean + ): AuthorizationGrant { const { authorization, expiration } = data; return new AuthorizationGrant( - Authorization.fromData(authorization), + Authorization.fromData(authorization, isClassic), new Date(expiration) ); } - public toData(): AuthorizationGrant.Data { + public toData(isClassic?: boolean): AuthorizationGrant.Data { const { authorization, expiration } = this; return { - authorization: authorization.toData(), + authorization: authorization.toData(isClassic), expiration: expiration.toISOString().replace(/\.000Z$/, 'Z'), }; } - public static fromProto(proto: AuthorizationGrant.Proto): AuthorizationGrant { + public static fromProto( + proto: AuthorizationGrant.Proto, + isClassic?: boolean + ): AuthorizationGrant { return new AuthorizationGrant( - Authorization.fromProto(proto.authorization as Any), + Authorization.fromProto(proto.authorization as Any, isClassic), proto.expiration as Date ); } - public toProto(): AuthorizationGrant.Proto { + public toProto(isClassic?: boolean): AuthorizationGrant.Proto { const { authorization, expiration } = this; return Grant_pb.fromPartial({ - authorization: authorization.packAny(), + authorization: authorization.packAny(isClassic), expiration, }); } @@ -88,37 +97,47 @@ export namespace Authorization { | GenericAuthorization.Data | StakeAuthorization.Data; export type Proto = Any; - export function fromAmino(data: Authorization.Amino): Authorization { + export function fromAmino( + data: Authorization.Amino, + isClassic?: boolean + ): Authorization { switch (data.type) { case 'msgauth/SendAuthorization': - return SendAuthorization.fromAmino(data); + case 'cosmos-sdk/SendAuthorization': + return SendAuthorization.fromAmino(data, isClassic); case 'msgauth/GenericAuthorization': - return GenericAuthorization.fromAmino(data); + case 'cosmos-sdk/GenericAuthorization': + return GenericAuthorization.fromAmino(data, isClassic); } } - export function fromData(data: Authorization.Data): Authorization { + export function fromData( + data: Authorization.Data, + isClassic?: boolean + ): Authorization { switch (data['@type']) { case '/cosmos.authz.v1beta1.GenericAuthorization': - return GenericAuthorization.fromData(data); - + return GenericAuthorization.fromData(data, isClassic); case '/cosmos.bank.v1beta1.SendAuthorization': - return SendAuthorization.fromData(data); + return SendAuthorization.fromData(data, isClassic); case '/cosmos.staking.v1beta1.StakeAuthorization': - return StakeAuthorization.fromData(data); + return StakeAuthorization.fromData(data, isClassic); } } - export function fromProto(proto: Authorization.Proto): Authorization { + export function fromProto( + proto: Authorization.Proto, + isClassic?: boolean + ): Authorization { const typeUrl = proto.typeUrl; switch (typeUrl) { case '/cosmos.authz.v1beta1.GenericAuthorization': - return GenericAuthorization.unpackAny(proto); + return GenericAuthorization.unpackAny(proto, isClassic); case '/cosmos.bank.v1beta1.SendAuthorization': - return SendAuthorization.unpackAny(proto); + return SendAuthorization.unpackAny(proto, isClassic); case '/cosmos.staking.v1beta1.StakeAuthorization': - return StakeAuthorization.unpackAny(proto); + return StakeAuthorization.unpackAny(proto, isClassic); } throw new Error(`Authorization type ${typeUrl} not recognized`); diff --git a/src/core/authz/authorizations/GenericAuthorization.ts b/src/core/authz/authorizations/GenericAuthorization.ts index a941c95d2..041f7e840 100644 --- a/src/core/authz/authorizations/GenericAuthorization.ts +++ b/src/core/authz/authorizations/GenericAuthorization.ts @@ -12,15 +12,19 @@ export class GenericAuthorization extends JSONSerializable< } public static fromAmino( - data: GenericAuthorization.Amino + data: GenericAuthorization.Amino, + _?: boolean ): GenericAuthorization { + _; return new GenericAuthorization(data.value.msg); } - public toAmino(): GenericAuthorization.Amino { + public toAmino(isClassic?: boolean): GenericAuthorization.Amino { const { msg } = this; return { - type: 'msgauth/GenericAuthorization', + type: isClassic + ? 'msgauth/GenericAuthorization' + : 'cosmos-sdk/GenericAuthorization', value: { msg, }, @@ -28,12 +32,15 @@ export class GenericAuthorization extends JSONSerializable< } public static fromData( - data: GenericAuthorization.Data + data: GenericAuthorization.Data, + _?: boolean ): GenericAuthorization { + _; return new GenericAuthorization(data.msg); } - public toData(): GenericAuthorization.Data { + public toData(_?: boolean): GenericAuthorization.Data { + _; const { msg } = this; return { '@type': '/cosmos.authz.v1beta1.GenericAuthorization', @@ -42,25 +49,30 @@ export class GenericAuthorization extends JSONSerializable< } public static fromProto( - data: GenericAuthorization.Proto + data: GenericAuthorization.Proto, + _?: boolean ): GenericAuthorization { + _; return new GenericAuthorization(data.msg); } - public toProto(): GenericAuthorization.Proto { + public toProto(_?: boolean): GenericAuthorization.Proto { + _; return GenericAuthorization_pb.fromPartial({ msg: this.msg, }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/cosmos.authz.v1beta1.GenericAuthorization', value: GenericAuthorization_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): GenericAuthorization { + public static unpackAny(msgAny: Any, _?: boolean): GenericAuthorization { + _; return GenericAuthorization.fromProto( GenericAuthorization_pb.decode(msgAny.value) ); @@ -69,7 +81,7 @@ export class GenericAuthorization extends JSONSerializable< export namespace GenericAuthorization { export interface Amino { - type: 'msgauth/GenericAuthorization'; + type: 'msgauth/GenericAuthorization' | 'cosmos-sdk/GenericAuthorization'; value: { msg: string; }; diff --git a/src/core/authz/authorizations/SendAuthorization.ts b/src/core/authz/authorizations/SendAuthorization.ts index 926aebecd..b5667ceb8 100644 --- a/src/core/authz/authorizations/SendAuthorization.ts +++ b/src/core/authz/authorizations/SendAuthorization.ts @@ -14,25 +14,36 @@ export class SendAuthorization extends JSONSerializable< this.spend_limit = new Coins(spend_limit); } - public static fromAmino(data: SendAuthorization.Amino): SendAuthorization { + public static fromAmino( + data: SendAuthorization.Amino, + _?: boolean + ): SendAuthorization { + _; return new SendAuthorization(Coins.fromAmino(data.value.spend_limit)); } - public toAmino(): SendAuthorization.Amino { + public toAmino(isClassic?: boolean): SendAuthorization.Amino { const { spend_limit } = this; return { - type: 'msgauth/SendAuthorization', + type: isClassic + ? 'msgauth/SendAuthorization' + : 'cosmos-sdk/SendAuthorization', value: { spend_limit: spend_limit.toAmino(), }, }; } - public static fromData(data: SendAuthorization.Data): SendAuthorization { + public static fromData( + data: SendAuthorization.Data, + _?: boolean + ): SendAuthorization { + _; return new SendAuthorization(Coins.fromData(data.spend_limit)); } - public toData(): SendAuthorization.Data { + public toData(_?: boolean): SendAuthorization.Data { + _; const { spend_limit } = this; return { '@type': '/cosmos.bank.v1beta1.SendAuthorization', @@ -40,24 +51,31 @@ export class SendAuthorization extends JSONSerializable< }; } - public static fromProto(proto: SendAuthorization.Proto): SendAuthorization { + public static fromProto( + proto: SendAuthorization.Proto, + _?: boolean + ): SendAuthorization { + _; return new SendAuthorization(Coins.fromProto(proto.spendLimit)); } - public toProto(): SendAuthorization.Proto { + public toProto(_?: boolean): SendAuthorization.Proto { + _; return SendAuthorization_pb.fromPartial({ spendLimit: this.spend_limit.toProto(), }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/cosmos.bank.v1beta1.SendAuthorization', value: SendAuthorization_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): SendAuthorization { + public static unpackAny(msgAny: Any, _?: boolean): SendAuthorization { + _; return SendAuthorization.fromProto( SendAuthorization_pb.decode(msgAny.value) ); @@ -66,7 +84,7 @@ export class SendAuthorization extends JSONSerializable< export namespace SendAuthorization { export interface Amino { - type: 'msgauth/SendAuthorization'; + type: 'msgauth/SendAuthorization' | 'cosmos-sdk/SendAuthorization'; value: { spend_limit: Coins.Amino; }; diff --git a/src/core/authz/authorizations/StakeAuthorization.ts b/src/core/authz/authorizations/StakeAuthorization.ts index 30c593d54..2b904d7b4 100644 --- a/src/core/authz/authorizations/StakeAuthorization.ts +++ b/src/core/authz/authorizations/StakeAuthorization.ts @@ -24,72 +24,87 @@ export class StakeAuthorization extends JSONSerializable< super(); } - public static fromAmino(_: any): StakeAuthorizationValidators { + public static fromAmino( + _: any, + isClassic?: boolean + ): StakeAuthorizationValidators { _; + isClassic; throw new Error('Amino not supported'); } - public toAmino(): any { + public toAmino(_?: boolean): any { + _; throw new Error('Amino not supported'); } - public static fromData(data: StakeAuthorization.Data): StakeAuthorization { + public static fromData( + data: StakeAuthorization.Data, + isClassic?: boolean + ): StakeAuthorization { return new StakeAuthorization( authorizationTypeFromJSON(data.authorization_type), data.max_tokens ? Coin.fromProto(data.max_tokens) : undefined, data.allow_list - ? StakeAuthorizationValidators.fromData(data.allow_list) + ? StakeAuthorizationValidators.fromData(data.allow_list, isClassic) : undefined, data.deny_list - ? StakeAuthorizationValidators.fromData(data.deny_list) + ? StakeAuthorizationValidators.fromData(data.deny_list, isClassic) : undefined ); } - public toData(): StakeAuthorization.Data { + public toData(isClassic?: boolean): StakeAuthorization.Data { const { max_tokens, allow_list, deny_list, authorization_type } = this; return { '@type': '/cosmos.staking.v1beta1.StakeAuthorization', authorization_type: authorizationTypeToJSON(authorization_type), max_tokens: max_tokens?.toData(), - allow_list: allow_list?.toData(), - deny_list: deny_list?.toData(), + allow_list: allow_list?.toData(isClassic), + deny_list: deny_list?.toData(isClassic), }; } - public static fromProto(proto: StakeAuthorization.Proto): StakeAuthorization { + public static fromProto( + proto: StakeAuthorization.Proto, + isClassic?: boolean + ): StakeAuthorization { return new StakeAuthorization( proto.authorizationType, proto.maxTokens ? Coin.fromProto(proto.maxTokens) : undefined, proto.allowList - ? StakeAuthorizationValidators.fromProto(proto.allowList) + ? StakeAuthorizationValidators.fromProto(proto.allowList, isClassic) : undefined, proto.denyList - ? StakeAuthorizationValidators.fromProto(proto.denyList) + ? StakeAuthorizationValidators.fromProto(proto.denyList, isClassic) : undefined ); } - public toProto(): StakeAuthorization.Proto { + public toProto(isClassic?: boolean): StakeAuthorization.Proto { const { max_tokens, allow_list, deny_list, authorization_type } = this; return StakeAuthorization_pb.fromPartial({ - allowList: allow_list?.toProto(), + allowList: allow_list?.toProto(isClassic), authorizationType: authorization_type, - denyList: deny_list?.toProto(), + denyList: deny_list?.toProto(isClassic), maxTokens: max_tokens?.toProto(), }); } - public packAny(): Any { + public packAny(isClassic?: boolean): Any { return Any.fromPartial({ typeUrl: '/cosmos.staking.v1beta1.StakeAuthorization', - value: StakeAuthorization_pb.encode(this.toProto()).finish(), + value: StakeAuthorization_pb.encode(this.toProto(isClassic)).finish(), }); } - public static unpackAny(msgAny: Any): StakeAuthorization { + public static unpackAny( + msgAny: Any, + isClassic?: boolean + ): StakeAuthorization { return StakeAuthorization.fromProto( - StakeAuthorization_pb.decode(msgAny.value) + StakeAuthorization_pb.decode(msgAny.value), + isClassic ); } } @@ -103,34 +118,45 @@ export class StakeAuthorizationValidators extends JSONSerializable< super(); } - public static fromAmino(_: any): StakeAuthorizationValidators { + public static fromAmino( + _: any, + isClassic?: boolean + ): StakeAuthorizationValidators { _; + isClassic; throw new Error('Amino not supported'); } - public toAmino(): any { + public toAmino(_?: boolean): any { + _; throw new Error('Amino not supported'); } public static fromData( - data: StakeAuthorizationValidators.Data + data: StakeAuthorizationValidators.Data, + _?: boolean ): StakeAuthorizationValidators { + _; return new StakeAuthorizationValidators(data.address); } - public toData(): StakeAuthorizationValidators.Data { + public toData(_?: boolean): StakeAuthorizationValidators.Data { + _; return { address: this.address, }; } public static fromProto( - proto: StakeAuthorizationValidators.Proto + proto: StakeAuthorizationValidators.Proto, + _?: boolean ): StakeAuthorizationValidators { + _; return new StakeAuthorizationValidators(proto.address); } - public toProto(): StakeAuthorizationValidators.Proto { + public toProto(_?: boolean): StakeAuthorizationValidators.Proto { + _; return StakeAuthorizationValidators_pb.fromPartial({ address: this.address, }); diff --git a/src/core/authz/msgs/MsgExecAuthorized.spec.ts b/src/core/authz/msgs/MsgExecAuthorized.spec.ts index 94459c0fe..393242b57 100644 --- a/src/core/authz/msgs/MsgExecAuthorized.spec.ts +++ b/src/core/authz/msgs/MsgExecAuthorized.spec.ts @@ -4,7 +4,7 @@ const examples = require('./MsgExecAuthorized.data.json'); describe('MsgExecAuthorized', () => { it('deserializes', () => { examples.forEach((data: MsgExecAuthorized.Amino) => { - expect(MsgExecAuthorized.fromAmino(data).toAmino()).toEqual(data); + expect(MsgExecAuthorized.fromAmino(data, true).toAmino(true)).toEqual(data); }); }); }); diff --git a/src/core/authz/msgs/MsgExecAuthorized.ts b/src/core/authz/msgs/MsgExecAuthorized.ts index f5b4e6fbf..6d686fa82 100644 --- a/src/core/authz/msgs/MsgExecAuthorized.ts +++ b/src/core/authz/msgs/MsgExecAuthorized.ts @@ -17,76 +17,88 @@ export class MsgExecAuthorized extends JSONSerializable< super(); } - public static fromAmino(data: MsgExecAuthorized.Amino): MsgExecAuthorized { + public static fromAmino( + data: MsgExecAuthorized.Amino, + isClassic?: boolean + ): MsgExecAuthorized { const { value: { grantee, msgs }, } = data; return new MsgExecAuthorized( grantee, - msgs.map(x => Msg.fromAmino(x)) + msgs.map(x => Msg.fromAmino(x, isClassic)) ); } - public toAmino(): MsgExecAuthorized.Amino { + public toAmino(isClassic?: boolean): MsgExecAuthorized.Amino { const { grantee, msgs } = this; return { - type: 'msgauth/MsgExecAuthorized', + type: isClassic ? 'msgauth/MsgExecAuthorized' : 'cosmos-sdk/MsgExec', value: { grantee, msgs: msgs.map(msg => { - return msg.toAmino(); + return msg.toAmino(isClassic); }), }, }; } - public static fromData(proto: MsgExecAuthorized.Data): MsgExecAuthorized { + public static fromData( + proto: MsgExecAuthorized.Data, + isClassic?: boolean + ): MsgExecAuthorized { const { grantee, msgs } = proto; return new MsgExecAuthorized( grantee, - msgs.map(x => Msg.fromData(x)) + msgs.map(x => Msg.fromData(x, isClassic)) ); } - public toData(): MsgExecAuthorized.Data { + public toData(isClassic?: boolean): MsgExecAuthorized.Data { const { grantee, msgs } = this; return { '@type': '/cosmos.authz.v1beta1.MsgExec', grantee, - msgs: msgs.map(msg => msg.toData()), + msgs: msgs.map(msg => msg.toData(isClassic)), }; } - public static fromProto(proto: MsgExecAuthorized.Proto): MsgExecAuthorized { + public static fromProto( + proto: MsgExecAuthorized.Proto, + isClassic?: boolean + ): MsgExecAuthorized { return new MsgExecAuthorized( proto.grantee, - proto.msgs.map(x => Msg.fromProto(x)) + proto.msgs.map(x => Msg.fromProto(x, isClassic)) ); } - public toProto(): MsgExecAuthorized.Proto { + public toProto(isClassic?: boolean): MsgExecAuthorized.Proto { const { grantee, msgs } = this; return MsgExec_pb.fromPartial({ grantee, - msgs: msgs.map(m => m.packAny()), + msgs: msgs.map(m => m.packAny(isClassic)), }); } - public packAny(): Any { + public packAny(isClassic?: boolean): Any { return Any.fromPartial({ typeUrl: '/cosmos.authz.v1beta1.MsgExec', - value: MsgExec_pb.encode(this.toProto()).finish(), + value: MsgExec_pb.encode(this.toProto(isClassic)).finish(), }); } - public static unpackAny(msgAny: Any): MsgExecAuthorized { - return MsgExecAuthorized.fromProto(MsgExec_pb.decode(msgAny.value)); + public static unpackAny(msgAny: Any, isClassic?: boolean): MsgExecAuthorized { + return MsgExecAuthorized.fromProto( + MsgExec_pb.decode(msgAny.value), + isClassic + ); } } export namespace MsgExecAuthorized { export interface Amino { - type: 'msgauth/MsgExecAuthorized'; + type: 'msgauth/MsgExecAuthorized' | 'cosmos-sdk/MsgExec'; value: { grantee: AccAddress; msgs: Msg.Amino[]; diff --git a/src/core/authz/msgs/MsgGrantAuthorization.spec.ts b/src/core/authz/msgs/MsgGrantAuthorization.spec.ts index b21a1bf5f..5c41e37ed 100644 --- a/src/core/authz/msgs/MsgGrantAuthorization.spec.ts +++ b/src/core/authz/msgs/MsgGrantAuthorization.spec.ts @@ -4,7 +4,7 @@ const examples = require('./MsgGrantAuthorization.data.json'); describe('MsgGrantAuthorization', () => { it('deserializes', () => { examples.forEach((data: MsgGrantAuthorization.Amino) => { - expect(MsgGrantAuthorization.fromAmino(data).toAmino()).toEqual(data); + expect(MsgGrantAuthorization.fromAmino(data, true).toAmino(true)).toEqual(data); }); }); }); diff --git a/src/core/authz/msgs/MsgGrantAuthorization.ts b/src/core/authz/msgs/MsgGrantAuthorization.ts index b1ba857c1..471ff485d 100644 --- a/src/core/authz/msgs/MsgGrantAuthorization.ts +++ b/src/core/authz/msgs/MsgGrantAuthorization.ts @@ -23,7 +23,8 @@ export class MsgGrantAuthorization extends JSONSerializable< } public static fromAmino( - data: MsgGrantAuthorization.Amino + data: MsgGrantAuthorization.Amino, + isClassic?: boolean ): MsgGrantAuthorization { const { value: { granter, grantee, grant }, @@ -31,77 +32,85 @@ export class MsgGrantAuthorization extends JSONSerializable< return new MsgGrantAuthorization( granter, grantee, - AuthorizationGrant.fromAmino(grant) + AuthorizationGrant.fromAmino(grant, isClassic) ); } - public toAmino(): MsgGrantAuthorization.Amino { + public toAmino(isClassic?: boolean): MsgGrantAuthorization.Amino { const { granter, grantee, grant } = this; return { - type: 'msgauth/MsgGrantAuthorization', + type: isClassic ? 'msgauth/MsgGrantAuthorization' : 'cosmos-sdk/MsgGrant', value: { granter, grantee, - grant: grant.toAmino(), + grant: grant.toAmino(isClassic), }, }; } public static fromData( - data: MsgGrantAuthorization.Data + data: MsgGrantAuthorization.Data, + isClassic?: boolean ): MsgGrantAuthorization { const { granter, grantee, grant } = data; return new MsgGrantAuthorization( granter, grantee, - AuthorizationGrant.fromData(grant) + AuthorizationGrant.fromData(grant, isClassic) ); } - public toData(): MsgGrantAuthorization.Data { + public toData(isClassic?: boolean): MsgGrantAuthorization.Data { const { granter, grantee, grant } = this; return { '@type': '/cosmos.authz.v1beta1.MsgGrant', granter, grantee, - grant: grant.toData(), + grant: grant.toData(isClassic), }; } public static fromProto( - data: MsgGrantAuthorization.Proto + data: MsgGrantAuthorization.Proto, + isClassic?: boolean ): MsgGrantAuthorization { return new MsgGrantAuthorization( data.granter, data.grantee, - AuthorizationGrant.fromProto(data.grant as Grant_pb) + AuthorizationGrant.fromProto(data.grant as Grant_pb, isClassic) ); } - public toProto(): MsgGrantAuthorization.Proto { + public toProto(isClassic?: boolean): MsgGrantAuthorization.Proto { const { grant, granter, grantee } = this; return MsgGrant_pb.fromPartial({ - grant: grant.toProto(), + grant: grant.toProto(isClassic), grantee, granter, }); } - public packAny(): Any { + public packAny(isClassic?: boolean): Any { return Any.fromPartial({ typeUrl: '/cosmos.authz.v1beta1.MsgGrant', - value: MsgGrant_pb.encode(this.toProto()).finish(), + value: MsgGrant_pb.encode(this.toProto(isClassic)).finish(), }); } - public static unpackAny(msgAny: Any): MsgGrantAuthorization { - return MsgGrantAuthorization.fromProto(MsgGrant_pb.decode(msgAny.value)); + public static unpackAny( + msgAny: Any, + isClassic?: boolean + ): MsgGrantAuthorization { + return MsgGrantAuthorization.fromProto( + MsgGrant_pb.decode(msgAny.value), + isClassic + ); } } export namespace MsgGrantAuthorization { export interface Amino { - type: 'msgauth/MsgGrantAuthorization'; + type: 'msgauth/MsgGrantAuthorization' | 'cosmos-sdk/MsgGrant'; value: { granter: AccAddress; grantee: AccAddress; diff --git a/src/core/authz/msgs/MsgRevokeAuthorization.spec.ts b/src/core/authz/msgs/MsgRevokeAuthorization.spec.ts index 487209736..8bfb0e70e 100644 --- a/src/core/authz/msgs/MsgRevokeAuthorization.spec.ts +++ b/src/core/authz/msgs/MsgRevokeAuthorization.spec.ts @@ -4,7 +4,7 @@ const examples = require('./MsgRevokeAuthorization.data.json'); describe('MsgRevokeAuthorization', () => { it('deserializes', () => { examples.forEach((data: MsgRevokeAuthorization.Amino) => { - expect(MsgRevokeAuthorization.fromAmino(data).toAmino()).toEqual(data); + expect(MsgRevokeAuthorization.fromAmino(data, true).toAmino(true)).toEqual(data); }); }); }); diff --git a/src/core/authz/msgs/MsgRevokeAuthorization.ts b/src/core/authz/msgs/MsgRevokeAuthorization.ts index 0b1685763..9cdf8eceb 100644 --- a/src/core/authz/msgs/MsgRevokeAuthorization.ts +++ b/src/core/authz/msgs/MsgRevokeAuthorization.ts @@ -22,18 +22,22 @@ export class MsgRevokeAuthorization extends JSONSerializable< } public static fromAmino( - data: MsgRevokeAuthorization.Amino + data: MsgRevokeAuthorization.Amino, + _?: boolean ): MsgRevokeAuthorization { + _; const { value: { granter, grantee, msg_type_url }, } = data; return new MsgRevokeAuthorization(granter, grantee, msg_type_url); } - public toAmino(): MsgRevokeAuthorization.Amino { + public toAmino(isClassic?: boolean): MsgRevokeAuthorization.Amino { const { granter, grantee, msg_type_url } = this; return { - type: 'msgauth/MsgRevokeAuthorization', + type: isClassic + ? 'msgauth/MsgRevokeAuthorization' + : 'cosmos-sdk/MsgRevoke', value: { granter, grantee, @@ -43,13 +47,16 @@ export class MsgRevokeAuthorization extends JSONSerializable< } public static fromData( - data: MsgRevokeAuthorization.Data + data: MsgRevokeAuthorization.Data, + _?: boolean ): MsgRevokeAuthorization { + _; const { granter, grantee, msg_type_url } = data; return new MsgRevokeAuthorization(granter, grantee, msg_type_url); } - public toData(): MsgRevokeAuthorization.Data { + public toData(_?: boolean): MsgRevokeAuthorization.Data { + _; const { granter, grantee, msg_type_url } = this; return { '@type': '/cosmos.authz.v1beta1.MsgRevoke', @@ -60,8 +67,10 @@ export class MsgRevokeAuthorization extends JSONSerializable< } public static fromProto( - proto: MsgRevokeAuthorization.Proto + proto: MsgRevokeAuthorization.Proto, + _?: boolean ): MsgRevokeAuthorization { + _; return new MsgRevokeAuthorization( proto.granter, proto.grantee, @@ -69,7 +78,8 @@ export class MsgRevokeAuthorization extends JSONSerializable< ); } - public toProto(): MsgRevokeAuthorization.Proto { + public toProto(_?: boolean): MsgRevokeAuthorization.Proto { + _; const { granter, grantee, msg_type_url } = this; return MsgRevoke_pb.fromPartial({ grantee, @@ -78,21 +88,27 @@ export class MsgRevokeAuthorization extends JSONSerializable< }); } - public packAny(): Any { + public packAny(isClassic?: boolean): Any { return Any.fromPartial({ typeUrl: '/cosmos.authz.v1beta1.MsgRevoke', - value: MsgRevoke_pb.encode(this.toProto()).finish(), + value: MsgRevoke_pb.encode(this.toProto(isClassic)).finish(), }); } - public static unpackAny(msgAny: Any): MsgRevokeAuthorization { - return MsgRevokeAuthorization.fromProto(MsgRevoke_pb.decode(msgAny.value)); + public static unpackAny( + msgAny: Any, + isClassic?: boolean + ): MsgRevokeAuthorization { + return MsgRevokeAuthorization.fromProto( + MsgRevoke_pb.decode(msgAny.value), + isClassic + ); } } export namespace MsgRevokeAuthorization { export interface Amino { - type: 'msgauth/MsgRevokeAuthorization'; + type: 'msgauth/MsgRevokeAuthorization' | 'cosmos-sdk/MsgRevoke'; value: { granter: AccAddress; grantee: AccAddress; diff --git a/src/core/bank/msgs/MsgMultiSend.spec.ts b/src/core/bank/msgs/MsgMultiSend.spec.ts index a83e4420d..5e692e1ea 100644 --- a/src/core/bank/msgs/MsgMultiSend.spec.ts +++ b/src/core/bank/msgs/MsgMultiSend.spec.ts @@ -2,7 +2,7 @@ import { MsgMultiSend } from './MsgMultiSend'; import { Coins } from '../../Coins'; import { Coin } from '../../Coin'; -const example: MsgMultiSend.Amino = { +const example_legacy: MsgMultiSend.Amino = { type: 'bank/MsgMultiSend', value: { inputs: [ @@ -10,7 +10,7 @@ const example: MsgMultiSend.Amino = { address: 'terra1fex9f78reuwhfsnc8sun6mz8rl9zwqh03fhwf3', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '1', }, ], @@ -19,7 +19,7 @@ const example: MsgMultiSend.Amino = { address: 'terra1gg64sjt947atmh45ls45avdwd89ey4c4r72u9h', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '6900000000', }, ], @@ -28,7 +28,7 @@ const example: MsgMultiSend.Amino = { address: 'terra1yh9u2x8phrh2dan56nntgpmg7xnjrwtldhgmyu', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '1000000', }, ], @@ -37,7 +37,7 @@ const example: MsgMultiSend.Amino = { address: 'terra1c5a0njk9q6q6nheja8gp4ymt2c0qspd8ggpg49', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '16430000000', }, ], @@ -46,7 +46,7 @@ const example: MsgMultiSend.Amino = { address: 'terra1psswnm8mvy9qg5z4cxc2nvptc9dx62r4tvfrmh', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '9900000000', }, ], @@ -55,7 +55,7 @@ const example: MsgMultiSend.Amino = { address: 'terra10lgpfm8wjrl4d9datzw6r6dl83k977afzel4t5', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '15800000000', }, ], @@ -64,7 +64,7 @@ const example: MsgMultiSend.Amino = { address: 'terra13uj5qs3lcqtffqtu6aa089uf6a2pusgwndzzch', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '6900000000', }, ], @@ -75,7 +75,7 @@ const example: MsgMultiSend.Amino = { address: 'terra1fex9f78reuwhfsnc8sun6mz8rl9zwqh03fhwf3', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '1', }, ], @@ -84,7 +84,7 @@ const example: MsgMultiSend.Amino = { address: 'terra105rz2q5a4w7nv7239tl9c4px5cjy7axx3axf6p', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '6900000000', }, ], @@ -93,7 +93,7 @@ const example: MsgMultiSend.Amino = { address: 'terra1fex9f78reuwhfsnc8sun6mz8rl9zwqh03fhwf3', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '1000000', }, ], @@ -102,7 +102,7 @@ const example: MsgMultiSend.Amino = { address: 'terra105rz2q5a4w7nv7239tl9c4px5cjy7axx3axf6p', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '16430000000', }, ], @@ -111,7 +111,7 @@ const example: MsgMultiSend.Amino = { address: 'terra105rz2q5a4w7nv7239tl9c4px5cjy7axx3axf6p', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '9900000000', }, ], @@ -120,7 +120,7 @@ const example: MsgMultiSend.Amino = { address: 'terra105rz2q5a4w7nv7239tl9c4px5cjy7axx3axf6p', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '15800000000', }, ], @@ -129,7 +129,7 @@ const example: MsgMultiSend.Amino = { address: 'terra105rz2q5a4w7nv7239tl9c4px5cjy7axx3axf6p', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '6900000000', }, ], @@ -145,7 +145,7 @@ const proto_example: MsgMultiSend.Data = { address: 'terra1fex9f78reuwhfsnc8sun6mz8rl9zwqh03fhwf3', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '1', }, ], @@ -154,7 +154,7 @@ const proto_example: MsgMultiSend.Data = { address: 'terra1gg64sjt947atmh45ls45avdwd89ey4c4r72u9h', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '6900000000', }, ], @@ -163,7 +163,7 @@ const proto_example: MsgMultiSend.Data = { address: 'terra1yh9u2x8phrh2dan56nntgpmg7xnjrwtldhgmyu', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '1000000', }, ], @@ -172,7 +172,7 @@ const proto_example: MsgMultiSend.Data = { address: 'terra1c5a0njk9q6q6nheja8gp4ymt2c0qspd8ggpg49', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '16430000000', }, ], @@ -181,7 +181,7 @@ const proto_example: MsgMultiSend.Data = { address: 'terra1psswnm8mvy9qg5z4cxc2nvptc9dx62r4tvfrmh', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '9900000000', }, ], @@ -190,7 +190,7 @@ const proto_example: MsgMultiSend.Data = { address: 'terra10lgpfm8wjrl4d9datzw6r6dl83k977afzel4t5', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '15800000000', }, ], @@ -199,7 +199,7 @@ const proto_example: MsgMultiSend.Data = { address: 'terra13uj5qs3lcqtffqtu6aa089uf6a2pusgwndzzch', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '6900000000', }, ], @@ -210,7 +210,7 @@ const proto_example: MsgMultiSend.Data = { address: 'terra1fex9f78reuwhfsnc8sun6mz8rl9zwqh03fhwf3', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '1', }, ], @@ -219,7 +219,7 @@ const proto_example: MsgMultiSend.Data = { address: 'terra105rz2q5a4w7nv7239tl9c4px5cjy7axx3axf6p', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '6900000000', }, ], @@ -228,7 +228,7 @@ const proto_example: MsgMultiSend.Data = { address: 'terra1fex9f78reuwhfsnc8sun6mz8rl9zwqh03fhwf3', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '1000000', }, ], @@ -237,7 +237,7 @@ const proto_example: MsgMultiSend.Data = { address: 'terra105rz2q5a4w7nv7239tl9c4px5cjy7axx3axf6p', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '16430000000', }, ], @@ -246,7 +246,7 @@ const proto_example: MsgMultiSend.Data = { address: 'terra105rz2q5a4w7nv7239tl9c4px5cjy7axx3axf6p', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '9900000000', }, ], @@ -255,7 +255,7 @@ const proto_example: MsgMultiSend.Data = { address: 'terra105rz2q5a4w7nv7239tl9c4px5cjy7axx3axf6p', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '15800000000', }, ], @@ -264,7 +264,7 @@ const proto_example: MsgMultiSend.Data = { address: 'terra105rz2q5a4w7nv7239tl9c4px5cjy7axx3axf6p', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '6900000000', }, ], @@ -272,15 +272,153 @@ const proto_example: MsgMultiSend.Data = { ], }; +const example: MsgMultiSend.Amino = { + type: 'cosmos-sdk/MsgMultiSend', + value: { + inputs: [ + { + address: 'terra1fex9f78reuwhfsnc8sun6mz8rl9zwqh03fhwf3', + coins: [ + { + denom: 'uluna', + amount: '1', + }, + ], + }, + { + address: 'terra1gg64sjt947atmh45ls45avdwd89ey4c4r72u9h', + coins: [ + { + denom: 'uluna', + amount: '6900000000', + }, + ], + }, + { + address: 'terra1yh9u2x8phrh2dan56nntgpmg7xnjrwtldhgmyu', + coins: [ + { + denom: 'uluna', + amount: '1000000', + }, + ], + }, + { + address: 'terra1c5a0njk9q6q6nheja8gp4ymt2c0qspd8ggpg49', + coins: [ + { + denom: 'uluna', + amount: '16430000000', + }, + ], + }, + { + address: 'terra1psswnm8mvy9qg5z4cxc2nvptc9dx62r4tvfrmh', + coins: [ + { + denom: 'uluna', + amount: '9900000000', + }, + ], + }, + { + address: 'terra10lgpfm8wjrl4d9datzw6r6dl83k977afzel4t5', + coins: [ + { + denom: 'uluna', + amount: '15800000000', + }, + ], + }, + { + address: 'terra13uj5qs3lcqtffqtu6aa089uf6a2pusgwndzzch', + coins: [ + { + denom: 'uluna', + amount: '6900000000', + }, + ], + }, + ], + outputs: [ + { + address: 'terra1fex9f78reuwhfsnc8sun6mz8rl9zwqh03fhwf3', + coins: [ + { + denom: 'uluna', + amount: '1', + }, + ], + }, + { + address: 'terra105rz2q5a4w7nv7239tl9c4px5cjy7axx3axf6p', + coins: [ + { + denom: 'uluna', + amount: '6900000000', + }, + ], + }, + { + address: 'terra1fex9f78reuwhfsnc8sun6mz8rl9zwqh03fhwf3', + coins: [ + { + denom: 'uluna', + amount: '1000000', + }, + ], + }, + { + address: 'terra105rz2q5a4w7nv7239tl9c4px5cjy7axx3axf6p', + coins: [ + { + denom: 'uluna', + amount: '16430000000', + }, + ], + }, + { + address: 'terra105rz2q5a4w7nv7239tl9c4px5cjy7axx3axf6p', + coins: [ + { + denom: 'uluna', + amount: '9900000000', + }, + ], + }, + { + address: 'terra105rz2q5a4w7nv7239tl9c4px5cjy7axx3axf6p', + coins: [ + { + denom: 'uluna', + amount: '15800000000', + }, + ], + }, + { + address: 'terra105rz2q5a4w7nv7239tl9c4px5cjy7axx3axf6p', + coins: [ + { + denom: 'uluna', + amount: '6900000000', + }, + ], + }, + ], + }, +}; + describe('MsgMultiSend', () => { it('deserialize correctly', () => { - const multisend = MsgMultiSend.fromAmino(example); - expect(multisend.toAmino()).toMatchObject(example); + const multisend = MsgMultiSend.fromAmino(example_legacy); + expect(multisend.toAmino(true)).toMatchObject(example_legacy); + expect(multisend.toAmino(false)).toMatchObject(example); }); it('deserialize correctly proto', () => { const multisend = MsgMultiSend.fromProto(proto_example); - expect(multisend.toData()).toMatchObject(proto_example); + expect(multisend.toData(true)).toMatchObject(proto_example); + expect(multisend.toData(false)).toMatchObject(proto_example); }); it('can be created manually', () => { @@ -288,7 +426,7 @@ describe('MsgMultiSend', () => { new MsgMultiSend.Input( 'terra105rz2q5a4w7nv7239tl9c4px5cjy7axx3axf6p', new Coins({ - ukrw: 123123, + uluna: 123123, }) ), new MsgMultiSend.Input('terra105rz2q5a4w7nv7239tl9c4px5cjy7axx3axfad', [ @@ -300,7 +438,7 @@ describe('MsgMultiSend', () => { new MsgMultiSend.Output( 'terra105rz2q5a4w7nv7239tl9c4px5cjy7axx3axfad', new Coins({ - ukrw: 123123, + uluna: 123123, }) ), new MsgMultiSend.Output('terra105rz2q5a4w7nv7239tl9c4px5cjy7axx3axfga', { @@ -308,7 +446,7 @@ describe('MsgMultiSend', () => { }), ]; const multisend = new MsgMultiSend(inputs, outputs); - expect(multisend.toAmino()).toMatchObject({ + expect(multisend.toAmino(true)).toMatchObject({ type: 'bank/MsgMultiSend', value: { inputs: [ @@ -316,7 +454,7 @@ describe('MsgMultiSend', () => { address: 'terra105rz2q5a4w7nv7239tl9c4px5cjy7axx3axf6p', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '123123', }, ], @@ -336,7 +474,7 @@ describe('MsgMultiSend', () => { address: 'terra105rz2q5a4w7nv7239tl9c4px5cjy7axx3axfad', coins: [ { - denom: 'ukrw', + denom: 'uluna', amount: '123123', }, ], diff --git a/src/core/bank/msgs/MsgMultiSend.ts b/src/core/bank/msgs/MsgMultiSend.ts index b08729989..7961183f9 100644 --- a/src/core/bank/msgs/MsgMultiSend.ts +++ b/src/core/bank/msgs/MsgMultiSend.ts @@ -1,7 +1,9 @@ import { JSONSerializable } from '../../../util/json'; import { Coins } from '../../Coins'; import { AccAddress } from '../../bech32'; -import { Any } from '@terra-money/terra.proto/google/protobuf/any'; +import { Any } from '@terra-money/legacy.proto/google/protobuf/any'; +// there's no difference between two protos +//import { MsgMultiSend as MsgMultiSend_legacy_pb } from '@terra-money/legacy.proto/cosmos/bank/v1beta1/tx'; import { MsgMultiSend as MsgMultiSend_pb } from '@terra-money/terra.proto/cosmos/bank/v1beta1/tx'; import { Input as Input_pb, @@ -64,7 +66,8 @@ export class MsgMultiSend extends JSONSerializable< super(); } - public static fromAmino(data: MsgMultiSend.Amino): MsgMultiSend { + public static fromAmino(data: MsgMultiSend.Amino, _?: boolean): MsgMultiSend { + _; const { value: { inputs, outputs }, } = data; @@ -74,10 +77,10 @@ export class MsgMultiSend extends JSONSerializable< ); } - public toAmino(): MsgMultiSend.Amino { + public toAmino(isClassic?: boolean): MsgMultiSend.Amino { const { inputs, outputs } = this; return { - type: 'bank/MsgMultiSend', + type: isClassic ? 'bank/MsgMultiSend' : 'cosmos-sdk/MsgMultiSend', value: { inputs: inputs.map(i => i.toAmino()), outputs: outputs.map(o => o.toAmino()), @@ -85,7 +88,8 @@ export class MsgMultiSend extends JSONSerializable< }; } - public static fromData(data: MsgMultiSend.Data): MsgMultiSend { + public static fromData(data: MsgMultiSend.Data, _?: boolean): MsgMultiSend { + _; const { inputs, outputs } = data; return new MsgMultiSend( inputs.map(i => MsgMultiSend.Input.fromData(i)), @@ -93,7 +97,8 @@ export class MsgMultiSend extends JSONSerializable< ); } - public toData(): MsgMultiSend.Data { + public toData(_?: boolean): MsgMultiSend.Data { + _; const { inputs, outputs } = this; return { '@type': '/cosmos.bank.v1beta1.MsgMultiSend', @@ -102,14 +107,19 @@ export class MsgMultiSend extends JSONSerializable< }; } - public static fromProto(proto: MsgMultiSend.Proto): MsgMultiSend { + public static fromProto( + proto: MsgMultiSend.Proto, + _?: boolean + ): MsgMultiSend { + _; return new MsgMultiSend( proto.inputs.map(i => MsgMultiSend.Input.fromProto(i)), proto.outputs.map(o => MsgMultiSend.Output.fromProto(o)) ); } - public toProto(): MsgMultiSend.Proto { + public toProto(_?: boolean): MsgMultiSend.Proto { + _; const { inputs, outputs } = this; return MsgMultiSend_pb.fromPartial({ inputs: inputs.map(i => i.toProto()), @@ -117,21 +127,23 @@ export class MsgMultiSend extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/cosmos.bank.v1beta1.MsgMultiSend', value: MsgMultiSend_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgMultiSend { + public static unpackAny(msgAny: Any, _?: boolean): MsgMultiSend { + _; return MsgMultiSend.fromProto(MsgMultiSend_pb.decode(msgAny.value)); } } export namespace MsgMultiSend { export interface Amino { - readonly type: 'bank/MsgMultiSend'; + readonly type: 'bank/MsgMultiSend' | 'cosmos-sdk/MsgMultiSend'; value: { inputs: Input.Amino[]; outputs: Output.Amino[]; @@ -165,7 +177,8 @@ export namespace MsgMultiSend { this.coins = new Coins(coinsInput); } - public toAmino(): Input.Amino { + public toAmino(_?: boolean): Input.Amino { + _; const { address, coins } = this; return { address, @@ -173,12 +186,14 @@ export namespace MsgMultiSend { }; } - public static fromAmino(data: Input.Amino): Input { + public static fromAmino(data: Input.Amino, _?: boolean): Input { + _; const { address, coins } = data; return new Input(address, Coins.fromAmino(coins)); } - public toData(): Input.Data { + public toData(_?: boolean): Input.Data { + _; const { address, coins } = this; return { address, @@ -186,12 +201,14 @@ export namespace MsgMultiSend { }; } - public static fromData(data: Input.Data): Input { + public static fromData(data: Input.Data, _?: boolean): Input { + _; const { address, coins } = data; return new Input(address, Coins.fromData(coins)); } - public toProto(): Input.Proto { + public toProto(_?: boolean): Input.Proto { + _; const { address, coins } = this; return Input_pb.fromPartial({ address, @@ -199,7 +216,8 @@ export namespace MsgMultiSend { }); } - public static fromProto(proto: Input.Proto): Input { + public static fromProto(proto: Input.Proto, _?: boolean): Input { + _; return new Input(proto.address, Coins.fromProto(proto.coins)); } } @@ -223,7 +241,8 @@ export namespace MsgMultiSend { this.coins = new Coins(coinsInput); } - public toAmino(): Output.Amino { + public toAmino(_?: boolean): Output.Amino { + _; const { address, coins } = this; return { address, @@ -231,12 +250,14 @@ export namespace MsgMultiSend { }; } - public static fromAmino(data: Output.Amino): Output { + public static fromAmino(data: Output.Amino, _?: boolean): Output { + _; const { address, coins } = data; return new Output(address, Coins.fromAmino(coins)); } - public toData(): Output.Data { + public toData(_?: boolean): Output.Data { + _; const { address, coins } = this; return { address, @@ -244,12 +265,14 @@ export namespace MsgMultiSend { }; } - public static fromData(data: Output.Data): Output { + public static fromData(data: Output.Data, _?: boolean): Output { + _; const { address, coins } = data; return new Output(address, Coins.fromData(coins)); } - public toProto(): Output.Proto { + public toProto(_?: boolean): Output.Proto { + _; const { address, coins } = this; return Output_pb.fromPartial({ address, @@ -257,7 +280,8 @@ export namespace MsgMultiSend { }); } - public static fromProto(proto: Output.Proto): Output { + public static fromProto(proto: Output.Proto, _?: boolean): Output { + _; return new Output(proto.address, Coins.fromProto(proto.coins)); } } diff --git a/src/core/bank/msgs/MsgSend.spec.ts b/src/core/bank/msgs/MsgSend.spec.ts index 72c30ea93..6c07ad70f 100644 --- a/src/core/bank/msgs/MsgSend.spec.ts +++ b/src/core/bank/msgs/MsgSend.spec.ts @@ -25,7 +25,7 @@ describe('MsgSend', () => { }), }); - expect(send.toAmino()).toMatchObject({ + expect(send.toAmino(true)).toMatchObject({ type: 'bank/MsgSend', value: { from_address: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', diff --git a/src/core/bank/msgs/MsgSend.ts b/src/core/bank/msgs/MsgSend.ts index 9ba9350e4..8e71fa28a 100644 --- a/src/core/bank/msgs/MsgSend.ts +++ b/src/core/bank/msgs/MsgSend.ts @@ -1,7 +1,9 @@ import { Coins } from '../../Coins'; import { JSONSerializable } from '../../../util/json'; import { AccAddress } from '../../bech32'; -import { Any } from '@terra-money/terra.proto/google/protobuf/any'; +import { Any } from '@terra-money/legacy.proto/google/protobuf/any'; +// there's no difference between two protos +//import { MsgSend as MsgSend_legacy_pb } from '@terra-money/legacy.proto/cosmos/bank/v1beta1/tx'; import { MsgSend as MsgSend_pb } from '@terra-money/terra.proto/cosmos/bank/v1beta1/tx'; /** @@ -31,17 +33,18 @@ export class MsgSend extends JSONSerializable< this.amount = new Coins(amount); } - public static fromAmino(data: MsgSend.Amino): MsgSend { + public static fromAmino(data: MsgSend.Amino, _?: boolean): MsgSend { + _; const { value: { from_address, to_address, amount }, } = data; return new MsgSend(from_address, to_address, Coins.fromAmino(amount)); } - public toAmino(): MsgSend.Amino { + public toAmino(isClassic?: boolean): MsgSend.Amino { const { from_address, to_address, amount } = this; return { - type: 'bank/MsgSend', + type: isClassic ? 'bank/MsgSend' : 'cosmos-sdk/MsgSend', value: { from_address, to_address, @@ -50,13 +53,15 @@ export class MsgSend extends JSONSerializable< }; } - public static fromData(data: MsgSend.Data): MsgSend { + public static fromData(data: MsgSend.Data, isClassic?: boolean): MsgSend { + isClassic; const { from_address, to_address, amount } = data; return new MsgSend(from_address, to_address, Coins.fromData(amount)); } - public toData(): MsgSend.Data { + public toData(_?: boolean): MsgSend.Data { + _; const { from_address, to_address, amount } = this; return { '@type': '/cosmos.bank.v1beta1.MsgSend', @@ -66,7 +71,8 @@ export class MsgSend extends JSONSerializable< }; } - public static fromProto(proto: MsgSend.Proto): MsgSend { + public static fromProto(proto: MsgSend.Proto, _?: boolean): MsgSend { + _; return new MsgSend( proto.fromAddress, proto.toAddress, @@ -74,7 +80,8 @@ export class MsgSend extends JSONSerializable< ); } - public toProto(): MsgSend.Proto { + public toProto(_?: boolean): MsgSend.Proto { + _; const { from_address, to_address, amount } = this; return MsgSend_pb.fromPartial({ fromAddress: from_address, @@ -83,21 +90,23 @@ export class MsgSend extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/cosmos.bank.v1beta1.MsgSend', value: MsgSend_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgSend { + public static unpackAny(msgAny: Any, _?: boolean): MsgSend { + _; return MsgSend.fromProto(MsgSend_pb.decode(msgAny.value)); } } export namespace MsgSend { export interface Amino { - type: 'bank/MsgSend'; + type: 'bank/MsgSend' | 'cosmos-sdk/MsgSend'; value: { from_address: AccAddress; to_address: AccAddress; diff --git a/src/core/bech32.spec.ts b/src/core/bech32.spec.ts index 81e5c6372..4d9438c7d 100644 --- a/src/core/bech32.spec.ts +++ b/src/core/bech32.spec.ts @@ -25,9 +25,16 @@ describe('AccAddress', () => { const badAddress = bech32.encode('terra', words); expect(AccAddress.validate(badAddress)).toBe(false); + // normal account address expect( AccAddress.validate('terra1pdx498r0hrc2fj36sjhs8vuhrz9hd2cw0tmam9') ).toBe(true); + // contract account address + expect( + AccAddress.validate( + 'terra1uj9dm5xdm34fy5xwd84lfakarcnlpxw0ppgy7vpsruj0vtks29cqn0ztcs' + ) + ).toBe(true); }); it('converts from validator address', () => { diff --git a/src/core/bech32.ts b/src/core/bech32.ts index 83a088f13..72f4a46a8 100644 --- a/src/core/bech32.ts +++ b/src/core/bech32.ts @@ -35,7 +35,11 @@ export namespace AccAddress { * @param data string to check */ export function validate(data: string): boolean { - return checkPrefixAndLength('terra', data, 44); + // 44 for normal account and 64 for contract account + return ( + checkPrefixAndLength('terra', data, 44) || + checkPrefixAndLength('terra', data, 64) + ); } /** diff --git a/src/core/crisis/MsgVerifyInvariant.spec.ts b/src/core/crisis/MsgVerifyInvariant.spec.ts index 4c7425e4f..d3514e2b4 100644 --- a/src/core/crisis/MsgVerifyInvariant.spec.ts +++ b/src/core/crisis/MsgVerifyInvariant.spec.ts @@ -1,7 +1,7 @@ import { MsgVerifyInvariant } from './MsgVerifyInvariant'; describe('MsgVerifyInvariant', () => { - it('deserialize correctly', () => { + it('legacy: deserialize correctly', () => { const send = MsgVerifyInvariant.fromAmino({ type: 'crisis/MsgVerifyInvariant', value: { @@ -9,7 +9,24 @@ describe('MsgVerifyInvariant', () => { invariantModuleName: 'bank', invariantRoute: 'nonnegative-outstanding-supply', }, + }, true); + + expect(send).toMatchObject({ + sender: 'terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v', + invariantModuleName: 'bank', + invariantRoute: 'nonnegative-outstanding-supply', }); + }); + + it('deserialize correctly', () => { + const send = MsgVerifyInvariant.fromAmino({ + type: 'cosmos-sdk/MsgVerifyInvariant', + value: { + sender: 'terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v', + invariantModuleName: 'bank', + invariantRoute: 'nonnegative-outstanding-supply', + }, + }, false); expect(send).toMatchObject({ sender: 'terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v', diff --git a/src/core/crisis/MsgVerifyInvariant.ts b/src/core/crisis/MsgVerifyInvariant.ts index c19a51c11..bd70f73c8 100644 --- a/src/core/crisis/MsgVerifyInvariant.ts +++ b/src/core/crisis/MsgVerifyInvariant.ts @@ -1,5 +1,6 @@ import { JSONSerializable } from '../../util/json'; -import { Any } from '@terra-money/terra.proto/google/protobuf/any'; +import { Any } from '@terra-money/legacy.proto/google/protobuf/any'; +//import { MsgVerifyInvariant as MsgVerifyInvariant_pb } from '@terra-money/legacy.proto/cosmos/crisis/v1beta1/tx'; import { MsgVerifyInvariant as MsgVerifyInvariant_pb } from '@terra-money/terra.proto/cosmos/crisis/v1beta1/tx'; import { AccAddress } from '../bech32'; @@ -24,24 +25,27 @@ export class MsgVerifyInvariant extends JSONSerializable< super(); } - public static fromAmino(data: MsgVerifyInvariant.Amino): MsgVerifyInvariant { + public static fromAmino(data: MsgVerifyInvariant.Amino, _?: boolean): MsgVerifyInvariant { + _; const { value: { sender, invariantModuleName, invariantRoute }, } = data; return new MsgVerifyInvariant(sender, invariantModuleName, invariantRoute); } - public toAmino(): MsgVerifyInvariant.Amino { + public toAmino(_?: boolean): MsgVerifyInvariant.Amino { + _; throw new Error('MsgVerifyInvarant is not allowed to send'); } - public static fromData(data: MsgVerifyInvariant.Data): MsgVerifyInvariant { + public static fromData(data: MsgVerifyInvariant.Data, _?: boolean): MsgVerifyInvariant { + _; const { sender, invariantModuleName, invariantRoute } = data; - return new MsgVerifyInvariant(sender, invariantModuleName, invariantRoute); } - public toData(): MsgVerifyInvariant.Data { + public toData(_?: boolean): MsgVerifyInvariant.Data { + _; const { sender, invariantModuleName, invariantRoute } = this; return { '@type': '/cosmos.crisis.v1beta1.MsgVerifyInvariant', @@ -51,7 +55,8 @@ export class MsgVerifyInvariant extends JSONSerializable< }; } - public static fromProto(proto: MsgVerifyInvariant.Proto): MsgVerifyInvariant { + public static fromProto(proto: MsgVerifyInvariant.Proto, _?: boolean): MsgVerifyInvariant { + _; return new MsgVerifyInvariant( proto.sender, proto.invariantModuleName, @@ -59,18 +64,21 @@ export class MsgVerifyInvariant extends JSONSerializable< ); } - public toProto(): MsgVerifyInvariant.Proto { + public toProto(_?: boolean): MsgVerifyInvariant.Proto { + _; throw new Error('MsgVerifyInvarant is not allowed to send'); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/cosmos.crisis.v1beta1.MsgVerifyInvariant', value: MsgVerifyInvariant_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgVerifyInvariant { + public static unpackAny(msgAny: Any, _?: boolean): MsgVerifyInvariant { + _; return MsgVerifyInvariant.fromProto( MsgVerifyInvariant_pb.decode(msgAny.value) ); @@ -79,7 +87,7 @@ export class MsgVerifyInvariant extends JSONSerializable< export namespace MsgVerifyInvariant { export interface Amino { - type: 'crisis/MsgVerifyInvariant'; + type: 'crisis/MsgVerifyInvariant' | 'cosmos-sdk/MsgVerifyInvariant'; value: { sender: AccAddress; invariantModuleName: string; diff --git a/src/core/distribution/msgs/MsgFundCommunityPool.spec.ts b/src/core/distribution/msgs/MsgFundCommunityPool.spec.ts new file mode 100644 index 000000000..1bb27d24c --- /dev/null +++ b/src/core/distribution/msgs/MsgFundCommunityPool.spec.ts @@ -0,0 +1,105 @@ +import { Coins } from '../../Coins'; +import { MsgFundCommunityPool } from './MsgFundCommunityPool'; + +describe('MsgFundCommunityPool', () => { + it('legacy deserialize amino', () => { + const fund = MsgFundCommunityPool.fromAmino({ + type: 'distribution/MsgFundCommunityPool', + value: { + depositor: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + amount: [ + { + denom: 'uluna', + amount: '8102024952', + }, + ], + }, + }); + + expect(fund).toMatchObject({ + depositor: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + amount: new Coins({ + uluna: 8102024952, + }), + }); + + expect(fund.toAmino(true)).toMatchObject({ + type: 'distribution/MsgFundCommunityPool', + value: { + depositor: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + amount: [ + { + denom: 'uluna', + amount: '8102024952', + }, + ], + }, + }); + }); + + it('legacy deserialize proto', () => { + const fund = MsgFundCommunityPool.fromData({ + '@type': '/cosmos.distribution.v1beta1.MsgFundCommunityPool', + depositor: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + amount: [ + { + denom: 'uluna', + amount: '8102024952', + }, + ], + }); + + expect(fund).toMatchObject({ + depositor: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + amount: new Coins({ + uluna: 8102024952, + }), + }); + + expect(fund.toData()).toMatchObject({ + '@type': '/cosmos.distribution.v1beta1.MsgFundCommunityPool', + depositor: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + amount: [ + { + denom: 'uluna', + amount: '8102024952', + }, + ], + }); + }); + + it('deserialize amino', () => { + const fund = MsgFundCommunityPool.fromAmino({ + type: 'cosmos-sdk/MsgFundCommunityPool', + value: { + depositor: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + amount: [ + { + denom: 'uluna', + amount: '8102024952', + }, + ], + }, + }); + + expect(fund).toMatchObject({ + depositor: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + amount: new Coins({ + uluna: 8102024952, + }), + }); + + expect(fund.toAmino()).toMatchObject({ + type: 'cosmos-sdk/MsgFundCommunityPool', + value: { + depositor: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + amount: [ + { + denom: 'uluna', + amount: '8102024952', + }, + ], + }, + }); + }); +}); diff --git a/src/core/distribution/msgs/MsgFundCommunityPool.ts b/src/core/distribution/msgs/MsgFundCommunityPool.ts index 1152905fd..fbea93cb5 100644 --- a/src/core/distribution/msgs/MsgFundCommunityPool.ts +++ b/src/core/distribution/msgs/MsgFundCommunityPool.ts @@ -2,6 +2,8 @@ import { JSONSerializable } from '../../../util/json'; import { AccAddress } from '../../bech32'; import { Coins } from '../../Coins'; import { Any } from '@terra-money/terra.proto/google/protobuf/any'; +// there's no difference between two protos +// import { MsgFundCommunityPool as MsgFundCommunityPool_legacy_pb } from '@terra-money/legacy.proto/cosmos/distribution/v1beta1/tx'; import { MsgFundCommunityPool as MsgFundCommunityPool_pb } from '@terra-money/terra.proto/cosmos/distribution/v1beta1/tx'; export class MsgFundCommunityPool extends JSONSerializable< @@ -20,18 +22,22 @@ export class MsgFundCommunityPool extends JSONSerializable< } public static fromAmino( - data: MsgFundCommunityPool.Amino + data: MsgFundCommunityPool.Amino, + _?: boolean ): MsgFundCommunityPool { const { value: { depositor, amount }, } = data; + _; return new MsgFundCommunityPool(depositor, Coins.fromAmino(amount)); } - public toAmino(): MsgFundCommunityPool.Amino { + public toAmino(isClassic?: boolean): MsgFundCommunityPool.Amino { const { depositor, amount } = this; return { - type: 'distribution/MsgFundCommunityPool', + type: isClassic + ? 'distribution/MsgFundCommunityPool' + : 'cosmos-sdk/MsgFundCommunityPool', value: { depositor, amount: amount.toAmino(), @@ -40,13 +46,16 @@ export class MsgFundCommunityPool extends JSONSerializable< } public static fromData( - proto: MsgFundCommunityPool.Data + proto: MsgFundCommunityPool.Data, + _?: boolean ): MsgFundCommunityPool { + _; const { depositor, amount } = proto; return new MsgFundCommunityPool(depositor, Coins.fromData(amount)); } - public toData(): MsgFundCommunityPool.Data { + public toData(_?: boolean): MsgFundCommunityPool.Data { + _; const { depositor, amount } = this; return { '@type': '/cosmos.distribution.v1beta1.MsgFundCommunityPool', @@ -56,15 +65,18 @@ export class MsgFundCommunityPool extends JSONSerializable< } public static fromProto( - proto: MsgFundCommunityPool.Proto + proto: MsgFundCommunityPool.Proto, + _?: Boolean ): MsgFundCommunityPool { + _; return new MsgFundCommunityPool( proto.depositor, Coins.fromProto(proto.amount) ); } - public toProto(): MsgFundCommunityPool.Proto { + public toProto(_?: boolean): MsgFundCommunityPool.Proto { + _; const { depositor, amount } = this; return MsgFundCommunityPool_pb.fromPartial({ amount: amount.toProto(), @@ -72,14 +84,16 @@ export class MsgFundCommunityPool extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/cosmos.distribution.v1beta1.MsgFundCommunityPool', value: MsgFundCommunityPool_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgFundCommunityPool { + public static unpackAny(msgAny: Any, _?: boolean): MsgFundCommunityPool { + _; return MsgFundCommunityPool.fromProto( MsgFundCommunityPool_pb.decode(msgAny.value) ); @@ -88,7 +102,9 @@ export class MsgFundCommunityPool extends JSONSerializable< export namespace MsgFundCommunityPool { export interface Amino { - type: 'distribution/MsgFundCommunityPool'; + type: + | 'distribution/MsgFundCommunityPool' + | 'cosmos-sdk/MsgFundCommunityPool'; value: { depositor: AccAddress; amount: Coins.Amino; diff --git a/src/core/distribution/msgs/MsgSetWithdrawAddress.spec.ts b/src/core/distribution/msgs/MsgSetWithdrawAddress.spec.ts index e458f4536..cd3825ba7 100644 --- a/src/core/distribution/msgs/MsgSetWithdrawAddress.spec.ts +++ b/src/core/distribution/msgs/MsgSetWithdrawAddress.spec.ts @@ -2,14 +2,37 @@ import { MsgSetWithdrawAddress } from './MsgSetWithdrawAddress'; const MsgSetWithdrawAddressAmino = require('./MsgSetWithdrawAddress.data.json'); describe('MsgSetWithdrawAddress', () => { - it('deserializes', () => { + it('legacy deserialize amino', () => { MsgSetWithdrawAddressAmino.txs.forEach((txinfo: any) => { txinfo.tx.value.msg.forEach((msg: any) => { if (msg.type == 'distribution/MsgModifyWithdrawAddress') { const e = MsgSetWithdrawAddress.fromAmino(msg); - expect(e.toAmino()).toEqual(msg); + expect(e.toAmino(true)).toEqual(msg); } }); }); }); + + it('deserialize amino', () => { + const fund = MsgSetWithdrawAddress.fromAmino({ + type: 'cosmos-sdk/MsgModifyWithdrawAddress', + value: { + delegator_address: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + withdraw_address: 'terra1rf9xakxf97a49qa5svsf7yypjswzkutqfclur8', + }, + }); + + expect(fund).toMatchObject({ + delegator_address: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + withdraw_address: 'terra1rf9xakxf97a49qa5svsf7yypjswzkutqfclur8', + }); + + expect(fund.toAmino()).toMatchObject({ + type: 'cosmos-sdk/MsgModifyWithdrawAddress', + value: { + delegator_address: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + withdraw_address: 'terra1rf9xakxf97a49qa5svsf7yypjswzkutqfclur8', + }, + }); + }); }); diff --git a/src/core/distribution/msgs/MsgSetWithdrawAddress.ts b/src/core/distribution/msgs/MsgSetWithdrawAddress.ts index 396f271e8..137a9c958 100644 --- a/src/core/distribution/msgs/MsgSetWithdrawAddress.ts +++ b/src/core/distribution/msgs/MsgSetWithdrawAddress.ts @@ -1,6 +1,8 @@ import { JSONSerializable } from '../../../util/json'; import { AccAddress } from '../../bech32'; import { Any } from '@terra-money/terra.proto/google/protobuf/any'; +// there's no difference between two protos +// import { MsgSetWithdrawAddress as MsgSetWithdrawAddress_legacy_pb } from '@terra-money/legacy.proto/cosmos/distribution/v1beta1/tx'; import { MsgSetWithdrawAddress as MsgSetWithdrawAddress_pb } from '@terra-money/terra.proto/cosmos/distribution/v1beta1/tx'; /** @@ -25,18 +27,22 @@ export class MsgSetWithdrawAddress extends JSONSerializable< } public static fromAmino( - data: MsgSetWithdrawAddress.Amino + data: MsgSetWithdrawAddress.Amino, + _?: boolean ): MsgSetWithdrawAddress { + _; const { value: { delegator_address, withdraw_address }, } = data; return new MsgSetWithdrawAddress(delegator_address, withdraw_address); } - public toAmino(): MsgSetWithdrawAddress.Amino { + public toAmino(isClassic?: boolean): MsgSetWithdrawAddress.Amino { const { delegator_address, withdraw_address } = this; return { - type: 'distribution/MsgModifyWithdrawAddress', + type: isClassic + ? 'distribution/MsgModifyWithdrawAddress' + : 'cosmos-sdk/MsgModifyWithdrawAddress', value: { delegator_address, withdraw_address, @@ -45,13 +51,16 @@ export class MsgSetWithdrawAddress extends JSONSerializable< } public static fromData( - data: MsgSetWithdrawAddress.Data + data: MsgSetWithdrawAddress.Data, + _?: boolean ): MsgSetWithdrawAddress { + _; const { delegator_address, withdraw_address } = data; return new MsgSetWithdrawAddress(delegator_address, withdraw_address); } - public toData(): MsgSetWithdrawAddress.Data { + public toData(_?: boolean): MsgSetWithdrawAddress.Data { + _; const { delegator_address, withdraw_address } = this; return { '@type': '/cosmos.distribution.v1beta1.MsgSetWithdrawAddress', @@ -61,15 +70,18 @@ export class MsgSetWithdrawAddress extends JSONSerializable< } public static fromProto( - proto: MsgSetWithdrawAddress.Proto + proto: MsgSetWithdrawAddress.Proto, + _?: boolean ): MsgSetWithdrawAddress { + _; return new MsgSetWithdrawAddress( proto.delegatorAddress, proto.withdrawAddress ); } - public toProto(): MsgSetWithdrawAddress.Proto { + public toProto(_?: boolean): MsgSetWithdrawAddress.Proto { + _; const { delegator_address, withdraw_address } = this; return MsgSetWithdrawAddress_pb.fromPartial({ delegatorAddress: delegator_address, @@ -77,14 +89,16 @@ export class MsgSetWithdrawAddress extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/cosmos.distribution.v1beta1.MsgSetWithdrawAddress', value: MsgSetWithdrawAddress_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgSetWithdrawAddress { + public static unpackAny(msgAny: Any, _?: boolean): MsgSetWithdrawAddress { + _; return MsgSetWithdrawAddress.fromProto( MsgSetWithdrawAddress_pb.decode(msgAny.value) ); @@ -93,7 +107,9 @@ export class MsgSetWithdrawAddress extends JSONSerializable< export namespace MsgSetWithdrawAddress { export interface Amino { - type: 'distribution/MsgModifyWithdrawAddress'; + type: + | 'distribution/MsgModifyWithdrawAddress' + | 'cosmos-sdk/MsgModifyWithdrawAddress'; value: { delegator_address: AccAddress; withdraw_address: AccAddress; diff --git a/src/core/distribution/msgs/MsgWithdrawDelegatorReward.spec.ts b/src/core/distribution/msgs/MsgWithdrawDelegatorReward.spec.ts index 39a3ac565..d15448e3d 100644 --- a/src/core/distribution/msgs/MsgWithdrawDelegatorReward.spec.ts +++ b/src/core/distribution/msgs/MsgWithdrawDelegatorReward.spec.ts @@ -2,14 +2,39 @@ import { MsgWithdrawDelegatorReward } from './MsgWithdrawDelegatorReward'; const MsgWithdrawDelegatorRewardAmino = require('./MsgWithdrawDelegatorReward.data.json'); describe('MsgWithdrawDelegatorReward', () => { - it('deserializes', () => { + it('leagacy deserialize', () => { MsgWithdrawDelegatorRewardAmino.txs.forEach((txinfo: any) => { txinfo.tx.value.msg.forEach((msg: any) => { if (msg.type == 'distribution/MsgWithdrawDelegationReward') { const e = MsgWithdrawDelegatorReward.fromAmino(msg); - expect(e.toAmino()).toEqual(msg); + expect(e.toAmino(true)).toEqual(msg); } }); }); }); + + it('deserialize amino', () => { + const fund = MsgWithdrawDelegatorReward.fromAmino({ + type: 'cosmos-sdk/MsgWithdrawDelegationReward', + value: { + delegator_address: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + validator_address: + 'terravaloper1pc0gs3n6803x7jqe9m7etegmyx29xw38aaf3u7', + }, + }); + + expect(fund).toMatchObject({ + delegator_address: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + validator_address: 'terravaloper1pc0gs3n6803x7jqe9m7etegmyx29xw38aaf3u7', + }); + + expect(fund.toAmino()).toMatchObject({ + type: 'cosmos-sdk/MsgWithdrawDelegationReward', + value: { + delegator_address: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + validator_address: + 'terravaloper1pc0gs3n6803x7jqe9m7etegmyx29xw38aaf3u7', + }, + }); + }); }); diff --git a/src/core/distribution/msgs/MsgWithdrawDelegatorReward.ts b/src/core/distribution/msgs/MsgWithdrawDelegatorReward.ts index fb177a54c..edfd6f8c4 100644 --- a/src/core/distribution/msgs/MsgWithdrawDelegatorReward.ts +++ b/src/core/distribution/msgs/MsgWithdrawDelegatorReward.ts @@ -1,6 +1,8 @@ import { JSONSerializable } from '../../../util/json'; import { AccAddress, ValAddress } from '../../bech32'; import { Any } from '@terra-money/terra.proto/google/protobuf/any'; +// there's no difference between two protos +// import { MsgWithdrawDelegatorReward as MsgWithdrawDelegatorReward_legacy_pb } from '@terra-money/legacy.proto/cosmos/distribution/v1beta1/tx'; import { MsgWithdrawDelegatorReward as MsgWithdrawDelegatorReward_pb } from '@terra-money/terra.proto/cosmos/distribution/v1beta1/tx'; /** @@ -27,18 +29,22 @@ export class MsgWithdrawDelegatorReward extends JSONSerializable< } public static fromAmino( - data: MsgWithdrawDelegatorReward.Amino + data: MsgWithdrawDelegatorReward.Amino, + _?: boolean ): MsgWithdrawDelegatorReward { + _; const { value: { delegator_address, validator_address }, } = data; return new MsgWithdrawDelegatorReward(delegator_address, validator_address); } - public toAmino(): MsgWithdrawDelegatorReward.Amino { + public toAmino(isClassic?: boolean): MsgWithdrawDelegatorReward.Amino { const { delegator_address, validator_address } = this; return { - type: 'distribution/MsgWithdrawDelegationReward', + type: isClassic + ? 'distribution/MsgWithdrawDelegationReward' + : 'cosmos-sdk/MsgWithdrawDelegationReward', value: { delegator_address, validator_address, @@ -47,13 +53,16 @@ export class MsgWithdrawDelegatorReward extends JSONSerializable< } public static fromData( - proto: MsgWithdrawDelegatorReward.Data + proto: MsgWithdrawDelegatorReward.Data, + _?: boolean ): MsgWithdrawDelegatorReward { + _; const { delegator_address, validator_address } = proto; return new MsgWithdrawDelegatorReward(delegator_address, validator_address); } - public toData(): MsgWithdrawDelegatorReward.Data { + public toData(_?: boolean): MsgWithdrawDelegatorReward.Data { + _; const { delegator_address, validator_address } = this; return { '@type': '/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward', @@ -63,15 +72,18 @@ export class MsgWithdrawDelegatorReward extends JSONSerializable< } public static fromProto( - proto: MsgWithdrawDelegatorReward.Proto + proto: MsgWithdrawDelegatorReward.Proto, + _?: boolean ): MsgWithdrawDelegatorReward { + _; return new MsgWithdrawDelegatorReward( proto.delegatorAddress, proto.validatorAddress ); } - public toProto(): MsgWithdrawDelegatorReward.Proto { + public toProto(_?: boolean): MsgWithdrawDelegatorReward.Proto { + _; const { delegator_address, validator_address } = this; return MsgWithdrawDelegatorReward_pb.fromPartial({ delegatorAddress: delegator_address, @@ -79,14 +91,19 @@ export class MsgWithdrawDelegatorReward extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/cosmos.distribution.v1beta1.MsgWithdrawDelegatorReward', value: MsgWithdrawDelegatorReward_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgWithdrawDelegatorReward { + public static unpackAny( + msgAny: Any, + _?: boolean + ): MsgWithdrawDelegatorReward { + _; return MsgWithdrawDelegatorReward.fromProto( MsgWithdrawDelegatorReward_pb.decode(msgAny.value) ); @@ -95,7 +112,9 @@ export class MsgWithdrawDelegatorReward extends JSONSerializable< export namespace MsgWithdrawDelegatorReward { export interface Amino { - type: 'distribution/MsgWithdrawDelegationReward'; + type: + | 'distribution/MsgWithdrawDelegationReward' + | 'cosmos-sdk/MsgWithdrawDelegationReward'; value: { delegator_address: AccAddress; validator_address: ValAddress; diff --git a/src/core/distribution/msgs/MsgWithdrawValidatorCommission.spec.ts b/src/core/distribution/msgs/MsgWithdrawValidatorCommission.spec.ts index cf252c95e..546b838c4 100644 --- a/src/core/distribution/msgs/MsgWithdrawValidatorCommission.spec.ts +++ b/src/core/distribution/msgs/MsgWithdrawValidatorCommission.spec.ts @@ -2,14 +2,36 @@ import { MsgWithdrawValidatorCommission } from './MsgWithdrawValidatorCommission const MsgWithdrawValidatorCommissionAmino = require('./MsgWithdrawValidatorCommission.data.json'); describe('MsgWithdrawValidatorCommission', () => { - it('deserializes', () => { + it('legacy deserialize', () => { MsgWithdrawValidatorCommissionAmino.txs.forEach((txinfo: any) => { txinfo.tx.value.msg.forEach((msg: any) => { if (msg.type == 'distribution/MsgWithdrawValidatorCommission') { const e = MsgWithdrawValidatorCommission.fromAmino(msg); - expect(e.toAmino()).toEqual(msg); + expect(e.toAmino(true)).toEqual(msg); } }); }); }); + + it('deserialize amino', () => { + const fund = MsgWithdrawValidatorCommission.fromAmino({ + type: 'cosmos-sdk/MsgWithdrawValCommission', + value: { + validator_address: + 'terravaloper1pc0gs3n6803x7jqe9m7etegmyx29xw38aaf3u7', + }, + }); + + expect(fund).toMatchObject({ + validator_address: 'terravaloper1pc0gs3n6803x7jqe9m7etegmyx29xw38aaf3u7', + }); + + expect(fund.toAmino()).toMatchObject({ + type: 'cosmos-sdk/MsgWithdrawValCommission', + value: { + validator_address: + 'terravaloper1pc0gs3n6803x7jqe9m7etegmyx29xw38aaf3u7', + }, + }); + }); }); diff --git a/src/core/distribution/msgs/MsgWithdrawValidatorCommission.ts b/src/core/distribution/msgs/MsgWithdrawValidatorCommission.ts index 72170f4b8..13286ad94 100644 --- a/src/core/distribution/msgs/MsgWithdrawValidatorCommission.ts +++ b/src/core/distribution/msgs/MsgWithdrawValidatorCommission.ts @@ -1,7 +1,7 @@ import { JSONSerializable } from '../../../util/json'; import { ValAddress } from '../../bech32'; import { Any } from '@terra-money/terra.proto/google/protobuf/any'; -import { MsgWithdrawValidatorCommission as MsgWithdrawValidatorCommission_pb } from '@terra-money/terra.proto/cosmos/distribution/v1beta1/tx'; +import { MsgWithdrawValidatorCommission as MsgWithdrawValidatorCommission_pb } from '@terra-money/legacy.proto/cosmos/distribution/v1beta1/tx'; /** * A validator can withdraw their outstanding commission rewards accrued from all @@ -21,18 +21,22 @@ export class MsgWithdrawValidatorCommission extends JSONSerializable< } public static fromAmino( - data: MsgWithdrawValidatorCommission.Amino + data: MsgWithdrawValidatorCommission.Amino, + _?: boolean ): MsgWithdrawValidatorCommission { + _; const { value: { validator_address }, } = data; return new MsgWithdrawValidatorCommission(validator_address); } - public toAmino(): MsgWithdrawValidatorCommission.Amino { + public toAmino(isClassic?: boolean): MsgWithdrawValidatorCommission.Amino { const { validator_address } = this; return { - type: 'distribution/MsgWithdrawValidatorCommission', + type: isClassic + ? 'distribution/MsgWithdrawValidatorCommission' + : 'cosmos-sdk/MsgWithdrawValCommission', value: { validator_address, }, @@ -40,13 +44,16 @@ export class MsgWithdrawValidatorCommission extends JSONSerializable< } public static fromData( - proto: MsgWithdrawValidatorCommission.Data + proto: MsgWithdrawValidatorCommission.Data, + _?: boolean ): MsgWithdrawValidatorCommission { + _; const { validator_address } = proto; return new MsgWithdrawValidatorCommission(validator_address); } - public toData(): MsgWithdrawValidatorCommission.Data { + public toData(_?: boolean): MsgWithdrawValidatorCommission.Data { + _; const { validator_address } = this; return { '@type': '/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission', @@ -55,26 +62,34 @@ export class MsgWithdrawValidatorCommission extends JSONSerializable< } public static fromProto( - proto: MsgWithdrawValidatorCommission.Proto + proto: MsgWithdrawValidatorCommission.Proto, + _?: boolean ): MsgWithdrawValidatorCommission { + _; return new MsgWithdrawValidatorCommission(proto.validatorAddress); } - public toProto(): MsgWithdrawValidatorCommission.Proto { + public toProto(_?: boolean): MsgWithdrawValidatorCommission.Proto { + _; const { validator_address } = this; return MsgWithdrawValidatorCommission_pb.fromPartial({ validatorAddress: validator_address, }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/cosmos.distribution.v1beta1.MsgWithdrawValidatorCommission', value: MsgWithdrawValidatorCommission_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgWithdrawValidatorCommission { + public static unpackAny( + msgAny: Any, + _?: boolean + ): MsgWithdrawValidatorCommission { + _; return MsgWithdrawValidatorCommission.fromProto( MsgWithdrawValidatorCommission_pb.decode(msgAny.value) ); @@ -83,7 +98,9 @@ export class MsgWithdrawValidatorCommission extends JSONSerializable< export namespace MsgWithdrawValidatorCommission { export interface Amino { - type: 'distribution/MsgWithdrawValidatorCommission'; + type: + | 'distribution/MsgWithdrawValidatorCommission' + | 'cosmos-sdk/MsgWithdrawValCommission'; value: { validator_address: ValAddress; }; diff --git a/src/core/distribution/proposals/CommunityPoolSpendProposal.spec.ts b/src/core/distribution/proposals/CommunityPoolSpendProposal.spec.ts new file mode 100644 index 000000000..33e316f9a --- /dev/null +++ b/src/core/distribution/proposals/CommunityPoolSpendProposal.spec.ts @@ -0,0 +1,86 @@ +import { CommunityPoolSpendProposal } from './CommunityPoolSpendProposal'; +import { Coins } from '../../Coins'; + +describe('CommunityPoolSpendProposal', () => { + it('legacy deserialize', () => { + const fund = CommunityPoolSpendProposal.fromAmino({ + type: 'distribution/CommunityPoolSpendProposal', + value: { + title: 'Community Pool', + description: 'Community Pool', + recipient: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + amount: [ + { + denom: 'uluna', + amount: '8102024952', + }, + ], + }, + }); + + expect(fund).toMatchObject({ + title: 'Community Pool', + description: 'Community Pool', + recipient: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + amount: new Coins({ + uluna: 8102024952, + }), + }); + + expect(fund.toAmino(true)).toMatchObject({ + type: 'distribution/CommunityPoolSpendProposal', + value: { + title: 'Community Pool', + description: 'Community Pool', + recipient: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + amount: [ + { + denom: 'uluna', + amount: '8102024952', + }, + ], + }, + }); + }); +}); + +it('deserialize amino', () => { + const fund = CommunityPoolSpendProposal.fromAmino({ + type: 'cosmos-sdk/CommunityPoolSpendProposal', + value: { + title: 'Community Pool', + description: 'Community Pool', + recipient: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + amount: [ + { + denom: 'uluna', + amount: '8102024952', + }, + ], + }, + }); + + expect(fund).toMatchObject({ + title: 'Community Pool', + description: 'Community Pool', + recipient: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + amount: new Coins({ + uluna: 8102024952, + }), + }); + + expect(fund.toAmino()).toMatchObject({ + type: 'cosmos-sdk/CommunityPoolSpendProposal', + value: { + title: 'Community Pool', + description: 'Community Pool', + recipient: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + amount: [ + { + denom: 'uluna', + amount: '8102024952', + }, + ], + }, + }); +}); diff --git a/src/core/distribution/proposals/CommunityPoolSpendProposal.ts b/src/core/distribution/proposals/CommunityPoolSpendProposal.ts index f2d6967d4..9e335374e 100644 --- a/src/core/distribution/proposals/CommunityPoolSpendProposal.ts +++ b/src/core/distribution/proposals/CommunityPoolSpendProposal.ts @@ -1,7 +1,9 @@ import { JSONSerializable } from '../../../util/json'; import { Coins } from '../../Coins'; import { AccAddress } from '../../bech32'; -import { Any } from '@terra-money/terra.proto/google/protobuf/any'; +import { Any } from '@terra-money/legacy.proto/google/protobuf/any'; +// there's no difference between two protos +// import { CommunityPoolSpendProposal as CommunityPoolSpendProposal_legacy_pb } from '@terra-money/legacy.proto/cosmos/distribution/v1beta1/distribution'; import { CommunityPoolSpendProposal as CommunityPoolSpendProposal_pb } from '@terra-money/terra.proto/cosmos/distribution/v1beta1/distribution'; /** @@ -31,8 +33,10 @@ export class CommunityPoolSpendProposal extends JSONSerializable< } public static fromAmino( - data: CommunityPoolSpendProposal.Amino + data: CommunityPoolSpendProposal.Amino, + _?: boolean ): CommunityPoolSpendProposal { + _; const { value: { title, description, recipient, amount }, } = data; @@ -44,10 +48,12 @@ export class CommunityPoolSpendProposal extends JSONSerializable< ); } - public toAmino(): CommunityPoolSpendProposal.Amino { + public toAmino(isClassic?: boolean): CommunityPoolSpendProposal.Amino { const { title, description, recipient, amount } = this; return { - type: 'distribution/CommunityPoolSpendProposal', + type: isClassic + ? 'distribution/CommunityPoolSpendProposal' + : 'cosmos-sdk/CommunityPoolSpendProposal', value: { title, description, @@ -58,8 +64,10 @@ export class CommunityPoolSpendProposal extends JSONSerializable< } public static fromData( - data: CommunityPoolSpendProposal.Data + data: CommunityPoolSpendProposal.Data, + _?: boolean ): CommunityPoolSpendProposal { + _; const { title, description, recipient, amount } = data; return new CommunityPoolSpendProposal( title, @@ -69,7 +77,8 @@ export class CommunityPoolSpendProposal extends JSONSerializable< ); } - public toData(): CommunityPoolSpendProposal.Data { + public toData(_?: boolean): CommunityPoolSpendProposal.Data { + _; const { title, description, recipient, amount } = this; return { '@type': '/cosmos.distribution.v1beta1.CommunityPoolSpendProposal', @@ -81,8 +90,10 @@ export class CommunityPoolSpendProposal extends JSONSerializable< } public static fromProto( - proto: CommunityPoolSpendProposal.Proto + proto: CommunityPoolSpendProposal.Proto, + _?: boolean ): CommunityPoolSpendProposal { + _; return new CommunityPoolSpendProposal( proto.title, proto.description, @@ -91,7 +102,8 @@ export class CommunityPoolSpendProposal extends JSONSerializable< ); } - public toProto(): CommunityPoolSpendProposal.Proto { + public toProto(_?: boolean): CommunityPoolSpendProposal.Proto { + _; const { title, description, recipient, amount } = this; return CommunityPoolSpendProposal_pb.fromPartial({ amount: amount.toProto(), @@ -101,14 +113,19 @@ export class CommunityPoolSpendProposal extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/cosmos.distribution.v1beta1.CommunityPoolSpendProposal', value: CommunityPoolSpendProposal_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): CommunityPoolSpendProposal { + public static unpackAny( + msgAny: Any, + _?: boolean + ): CommunityPoolSpendProposal { + _; return CommunityPoolSpendProposal.fromProto( CommunityPoolSpendProposal_pb.decode(msgAny.value) ); @@ -117,7 +134,9 @@ export class CommunityPoolSpendProposal extends JSONSerializable< export namespace CommunityPoolSpendProposal { export interface Amino { - type: 'distribution/CommunityPoolSpendProposal'; + type: + | 'distribution/CommunityPoolSpendProposal' + | 'cosmos-sdk/CommunityPoolSpendProposal'; value: { title: string; description: string; diff --git a/src/core/feegrant/allowances/AllowedMsgAllowance.ts b/src/core/feegrant/allowances/AllowedMsgAllowance.ts index 750a223d3..e1fdfc94a 100644 --- a/src/core/feegrant/allowances/AllowedMsgAllowance.ts +++ b/src/core/feegrant/allowances/AllowedMsgAllowance.ts @@ -24,32 +24,43 @@ export class AllowedMsgAllowance extends JSONSerializable< } public static fromAmino( - data: AllowedMsgAllowance.Amino + data: AllowedMsgAllowance.Amino, + isClassic?: boolean ): AllowedMsgAllowance { const { value: { allowance, allowed_messages }, } = data; return new AllowedMsgAllowance( - allowance.type === 'feegrant/BasicAllowance' - ? BasicAllowance.fromAmino(allowance) - : PeriodicAllowance.fromAmino(allowance), + allowance.type === 'feegrant/BasicAllowance' || + allowance.type === 'cosmos-sdk/BasicAllowance' + ? BasicAllowance.fromAmino(allowance as BasicAllowance.Amino, isClassic) + : PeriodicAllowance.fromAmino( + allowance as PeriodicAllowance.Amino, + isClassic + ), allowed_messages ); } - public toAmino(): AllowedMsgAllowance.Amino { + public toAmino(isClassic?: boolean): AllowedMsgAllowance.Amino { const { allowance, allowed_messages } = this; return { - type: 'feegrant/AllowedMsgAllowance', + type: isClassic + ? 'feegrant/AllowedMsgAllowance' + : 'cosmos-sdk/AllowedMsgAllowance', value: { - allowance: allowance.toAmino(), + allowance: allowance.toAmino(isClassic), allowed_messages, }, }; } - public static fromData(proto: AllowedMsgAllowance.Data): AllowedMsgAllowance { + public static fromData( + proto: AllowedMsgAllowance.Data, + _?: boolean + ): AllowedMsgAllowance { + _; const { allowance, allowed_messages } = proto; return new AllowedMsgAllowance( allowance['@type'] === '/cosmos.feegrant.v1beta1.BasicAllowance' @@ -59,7 +70,8 @@ export class AllowedMsgAllowance extends JSONSerializable< ); } - public toData(): AllowedMsgAllowance.Data { + public toData(_?: boolean): AllowedMsgAllowance.Data { + _; const { allowance, allowed_messages } = this; return { '@type': '/cosmos.feegrant.v1beta1.AllowedMsgAllowance', @@ -69,8 +81,10 @@ export class AllowedMsgAllowance extends JSONSerializable< } public static fromProto( - proto: AllowedMsgAllowance.Proto + proto: AllowedMsgAllowance.Proto, + _?: boolean ): AllowedMsgAllowance { + _; const allowance = proto.allowance as Any; return new AllowedMsgAllowance( allowance?.typeUrl === '/cosmos.feegrant.v1beta1.BasicAllowance' @@ -80,7 +94,8 @@ export class AllowedMsgAllowance extends JSONSerializable< ); } - public toProto(): AllowedMsgAllowance.Proto { + public toProto(_?: boolean): AllowedMsgAllowance.Proto { + _; const { allowance, allowed_messages } = this; return AllowedMsgAllowance_pb.fromPartial({ allowance: allowance.packAny(), @@ -88,14 +103,16 @@ export class AllowedMsgAllowance extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/cosmos.feegrant.v1beta1.AllowedMsgAllowance', value: AllowedMsgAllowance_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): AllowedMsgAllowance { + public static unpackAny(msgAny: Any, _?: boolean): AllowedMsgAllowance { + _; return AllowedMsgAllowance.fromProto( AllowedMsgAllowance_pb.decode(msgAny.value) ); @@ -104,7 +121,7 @@ export class AllowedMsgAllowance extends JSONSerializable< export namespace AllowedMsgAllowance { export interface Amino { - type: 'feegrant/AllowedMsgAllowance'; + type: 'feegrant/AllowedMsgAllowance' | 'cosmos-sdk/AllowedMsgAllowance'; value: { allowance: BasicAllowance.Amino | PeriodicAllowance.Amino; allowed_messages: string[]; diff --git a/src/core/feegrant/allowances/BasicAllowance.spec.ts b/src/core/feegrant/allowances/BasicAllowance.spec.ts index 052a7164a..671806000 100644 --- a/src/core/feegrant/allowances/BasicAllowance.spec.ts +++ b/src/core/feegrant/allowances/BasicAllowance.spec.ts @@ -1,9 +1,19 @@ import { Coins } from '../../Coins'; import { BasicAllowance } from './BasicAllowance'; +const now = new Date(); + describe('BasicAllowance', () => { + + it('amino type', () => { + const ba = new BasicAllowance('1000uluna', now); + const aminoV1 = ba.toAmino(true); + const aminoV2 = ba.toAmino(false); + expect(aminoV1.type).toEqual("feegrant/BasicAllowance"); + expect(aminoV2.type).toEqual("cosmos-sdk/BasicAllowance"); + }); + it('both set', () => { - const now = new Date(); const ba = new BasicAllowance('1000uluna', now); expect(ba.toData().spend_limit).toEqual(new Coins('1000uluna').toData()); @@ -34,7 +44,7 @@ describe('BasicAllowance', () => { const ba = new BasicAllowance(undefined, now); expect(ba.toData().spend_limit).toEqual(undefined); - expect(ba.toData().expiration).toEqual(now.toISOString()); + expect(ba.toData().expiration).toEqual(now.toISOString().replace(/\.000Z$/, 'Z')); expect(ba.toProto().spendLimit).toHaveLength(0); expect(ba.toProto().expiration).toEqual(now); expect(ba.toAmino().value.spend_limit).toBeUndefined(); diff --git a/src/core/feegrant/allowances/BasicAllowance.ts b/src/core/feegrant/allowances/BasicAllowance.ts index 559a205db..2350052a8 100644 --- a/src/core/feegrant/allowances/BasicAllowance.ts +++ b/src/core/feegrant/allowances/BasicAllowance.ts @@ -37,7 +37,11 @@ export class BasicAllowance extends JSONSerializable< } } - public static fromAmino(data: BasicAllowance.Amino): BasicAllowance { + public static fromAmino( + data: BasicAllowance.Amino, + _?: boolean + ): BasicAllowance { + _; const { value: { spend_limit, expiration }, } = data; @@ -50,10 +54,10 @@ export class BasicAllowance extends JSONSerializable< new BasicAllowance(''); } - public toAmino(): BasicAllowance.Amino { + public toAmino(isClassic?: boolean): BasicAllowance.Amino { const { spend_limit, expiration } = this; return { - type: 'feegrant/BasicAllowance', + type: isClassic ? 'feegrant/BasicAllowance' : 'cosmos-sdk/BasicAllowance', value: { spend_limit: spend_limit?.toAmino() || undefined, expiration: @@ -62,7 +66,11 @@ export class BasicAllowance extends JSONSerializable< }; } - public static fromData(proto: BasicAllowance.Data): BasicAllowance { + public static fromData( + proto: BasicAllowance.Data, + _?: boolean + ): BasicAllowance { + _; const { spend_limit, expiration } = proto; return new BasicAllowance( spend_limit ? Coins.fromData(spend_limit) : undefined, @@ -70,7 +78,8 @@ export class BasicAllowance extends JSONSerializable< ); } - public toData(): BasicAllowance.Data { + public toData(_?: boolean): BasicAllowance.Data { + _; const { spend_limit, expiration } = this; return { '@type': '/cosmos.feegrant.v1beta1.BasicAllowance', @@ -80,14 +89,19 @@ export class BasicAllowance extends JSONSerializable< }; } - public static fromProto(proto: BasicAllowance.Proto): BasicAllowance { + public static fromProto( + proto: BasicAllowance.Proto, + _?: boolean + ): BasicAllowance { + _; return new BasicAllowance( Coins.fromProto(proto.spendLimit), proto.expiration ? (proto.expiration as Date) : undefined ); } - public toProto(): BasicAllowance.Proto { + public toProto(_?: boolean): BasicAllowance.Proto { + _; const { spend_limit, expiration } = this; return BasicAllowance_pb.fromPartial({ expiration, @@ -95,21 +109,23 @@ export class BasicAllowance extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/cosmos.feegrant.v1beta1.BasicAllowance', value: BasicAllowance_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): BasicAllowance { + public static unpackAny(msgAny: Any, _?: boolean): BasicAllowance { + _; return BasicAllowance.fromProto(BasicAllowance_pb.decode(msgAny.value)); } } export namespace BasicAllowance { export interface Amino { - type: 'feegrant/BasicAllowance'; + type: 'feegrant/BasicAllowance' | 'cosmos-sdk/BasicAllowance'; value: { spend_limit?: Coins.Amino; expiration?: string; diff --git a/src/core/feegrant/allowances/PeriodicAllowance.ts b/src/core/feegrant/allowances/PeriodicAllowance.ts index ea002cf6a..a4fd2e6a3 100644 --- a/src/core/feegrant/allowances/PeriodicAllowance.ts +++ b/src/core/feegrant/allowances/PeriodicAllowance.ts @@ -36,7 +36,10 @@ export class PeriodicAllowance extends JSONSerializable< this.period_can_spend = new Coins(period_can_spend); } - public static fromAmino(data: PeriodicAllowance.Amino): PeriodicAllowance { + public static fromAmino( + data: PeriodicAllowance.Amino, + isClassic?: boolean + ): PeriodicAllowance { const { value: { basic, @@ -48,7 +51,7 @@ export class PeriodicAllowance extends JSONSerializable< } = data; return new PeriodicAllowance( - BasicAllowance.fromAmino(basic), + BasicAllowance.fromAmino(basic, isClassic), Number.parseInt(period), Coins.fromAmino(period_spend_limit), Coins.fromAmino(period_can_spend), @@ -56,7 +59,7 @@ export class PeriodicAllowance extends JSONSerializable< ); } - public toAmino(): PeriodicAllowance.Amino { + public toAmino(isClassic?: boolean): PeriodicAllowance.Amino { const { basic, period, @@ -65,9 +68,11 @@ export class PeriodicAllowance extends JSONSerializable< period_reset, } = this; return { - type: 'feegrant/PeriodicAllowance', + type: isClassic + ? 'feegrant/PeriodicAllowance' + : 'cosmos-sdk/PeriodicAllowance', value: { - basic: basic.toAmino(), + basic: basic.toAmino(isClassic), period: period.toString(), period_spend_limit: period_spend_limit.toAmino(), period_can_spend: period_can_spend.toAmino(), @@ -76,7 +81,11 @@ export class PeriodicAllowance extends JSONSerializable< }; } - public static fromData(proto: PeriodicAllowance.Data): PeriodicAllowance { + public static fromData( + proto: PeriodicAllowance.Data, + _?: boolean + ): PeriodicAllowance { + _; const { basic, period, @@ -93,7 +102,8 @@ export class PeriodicAllowance extends JSONSerializable< ); } - public toData(): PeriodicAllowance.Data { + public toData(_?: boolean): PeriodicAllowance.Data { + _; const { basic, period, @@ -111,7 +121,11 @@ export class PeriodicAllowance extends JSONSerializable< }; } - public static fromProto(proto: PeriodicAllowance.Proto): PeriodicAllowance { + public static fromProto( + proto: PeriodicAllowance.Proto, + _?: boolean + ): PeriodicAllowance { + _; return new PeriodicAllowance( BasicAllowance.fromProto(proto.basic as BasicAllowance.Proto), proto.period?.seconds.toNumber() as number, @@ -121,7 +135,8 @@ export class PeriodicAllowance extends JSONSerializable< ); } - public toProto(): PeriodicAllowance.Proto { + public toProto(_?: boolean): PeriodicAllowance.Proto { + _; const { basic, period, @@ -139,14 +154,16 @@ export class PeriodicAllowance extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/cosmos.feegrant.v1beta1.PeriodicAllowance', value: PeriodicAllowance_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): PeriodicAllowance { + public static unpackAny(msgAny: Any, _?: boolean): PeriodicAllowance { + _; return PeriodicAllowance.fromProto( PeriodicAllowance_pb.decode(msgAny.value) ); @@ -155,7 +172,7 @@ export class PeriodicAllowance extends JSONSerializable< export namespace PeriodicAllowance { export interface Amino { - type: 'feegrant/PeriodicAllowance'; + type: 'feegrant/PeriodicAllowance' | 'cosmos-sdk/PeriodicAllowance'; value: { basic: BasicAllowance.Amino; period: string; diff --git a/src/core/feegrant/allowances/index.ts b/src/core/feegrant/allowances/index.ts index 31820650c..2de020554 100644 --- a/src/core/feegrant/allowances/index.ts +++ b/src/core/feegrant/allowances/index.ts @@ -5,7 +5,7 @@ import { AllowedMsgAllowance } from './AllowedMsgAllowance'; export * from './BasicAllowance'; export * from './PeriodicAllowance'; export * from './AllowedMsgAllowance'; -import { Any } from '@terra-money/terra.proto/google/protobuf/any'; +import { Any } from '@terra-money/legacy.proto/google/protobuf/any'; export type Allowance = | BasicAllowance @@ -28,36 +28,45 @@ export namespace Allowance { | PeriodicAllowance.Proto | AllowedMsgAllowance.Proto; - export function fromAmino(data: Allowance.Amino): Allowance { + export function fromAmino( + data: Allowance.Amino, + isClassic?: boolean + ): Allowance { switch (data.type) { case 'feegrant/BasicAllowance': - return BasicAllowance.fromAmino(data); + case 'cosmos-sdk/BasicAllowance': + return BasicAllowance.fromAmino(data, isClassic); case 'feegrant/PeriodicAllowance': - return PeriodicAllowance.fromAmino(data); + case 'cosmos-sdk/PeriodicAllowance': + return PeriodicAllowance.fromAmino(data, isClassic); case 'feegrant/AllowedMsgAllowance': - return AllowedMsgAllowance.fromAmino(data); + case 'cosmos-sdk/AllowedMsgAllowance': + return AllowedMsgAllowance.fromAmino(data, isClassic); } } - export function fromData(data: Allowance.Data): Allowance { + export function fromData( + data: Allowance.Data, + isClassic?: boolean + ): Allowance { switch (data['@type']) { case '/cosmos.feegrant.v1beta1.PeriodicAllowance': - return PeriodicAllowance.fromData(data); + return PeriodicAllowance.fromData(data, isClassic); case '/cosmos.feegrant.v1beta1.BasicAllowance': - return BasicAllowance.fromData(data); + return BasicAllowance.fromData(data, isClassic); case '/cosmos.feegrant.v1beta1.AllowedMsgAllowance': - return AllowedMsgAllowance.fromData(data); + return AllowedMsgAllowance.fromData(data, isClassic); } } - export function fromProto(proto: Any): Allowance { + export function fromProto(proto: Any, isClassic?: boolean): Allowance { switch (proto.typeUrl) { case '/cosmos.feegrant.v1beta1.PeriodicAllowance': - return PeriodicAllowance.unpackAny(proto); + return PeriodicAllowance.unpackAny(proto, isClassic); case '/cosmos.feegrant.v1beta1.BasicAllowance': - return BasicAllowance.unpackAny(proto); + return BasicAllowance.unpackAny(proto, isClassic); case '/cosmos.feegrant.v1beta1.AllowedMsgAllowance': - return AllowedMsgAllowance.unpackAny(proto); + return AllowedMsgAllowance.unpackAny(proto, isClassic); } throw new Error(`not supported allowance ${proto.typeUrl}`); diff --git a/src/core/feegrant/msgs/MsgGrantAllowance.ts b/src/core/feegrant/msgs/MsgGrantAllowance.ts index 471569482..f831a9a34 100644 --- a/src/core/feegrant/msgs/MsgGrantAllowance.ts +++ b/src/core/feegrant/msgs/MsgGrantAllowance.ts @@ -27,82 +27,94 @@ export class MsgGrantAllowance extends JSONSerializable< super(); } - public static fromAmino(data: MsgGrantAllowance.Amino): MsgGrantAllowance { + public static fromAmino( + data: MsgGrantAllowance.Amino, + isClassic?: boolean + ): MsgGrantAllowance { const { value: { granter, grantee, allowance }, } = data; return new MsgGrantAllowance( granter, grantee, - Allowance.fromAmino(allowance) + Allowance.fromAmino(allowance, isClassic) ); } - public toAmino(): MsgGrantAllowance.Amino { + public toAmino(isClassic?: boolean): MsgGrantAllowance.Amino { const { granter, grantee, allowance } = this; return { - type: 'feegrant/MsgGrantAllowance', + type: isClassic + ? 'feegrant/MsgGrantAllowance' + : 'cosmos-sdk/MsgGrantAllowance', value: { granter, grantee, - allowance: allowance.toAmino(), + allowance: allowance.toAmino(isClassic), }, }; } - public static fromData(data: MsgGrantAllowance.Data): MsgGrantAllowance { + public static fromData( + data: MsgGrantAllowance.Data, + isClassic?: boolean + ): MsgGrantAllowance { const { granter, grantee, allowance } = data; return new MsgGrantAllowance( granter, grantee, - Allowance.fromData(allowance) + Allowance.fromData(allowance, isClassic) ); } - public toData(): MsgGrantAllowance.Data { + public toData(isClassic?: boolean): MsgGrantAllowance.Data { const { granter, grantee, allowance } = this; return { '@type': '/cosmos.feegrant.v1beta1.MsgGrantAllowance', granter, grantee, - allowance: allowance.toData(), + allowance: allowance.toData(isClassic), }; } - public static fromProto(proto: MsgGrantAllowance.Proto): MsgGrantAllowance { + public static fromProto( + proto: MsgGrantAllowance.Proto, + isClassic?: boolean + ): MsgGrantAllowance { return new MsgGrantAllowance( proto.granter, proto.grantee, - Allowance.fromProto(proto.allowance as Any) + Allowance.fromProto(proto.allowance as Any, isClassic) ); } - public toProto(): MsgGrantAllowance.Proto { + public toProto(isClassic?: boolean): MsgGrantAllowance.Proto { const { granter, grantee, allowance } = this; return MsgGrantAllowance_pb.fromPartial({ - allowance: allowance.packAny(), + allowance: allowance.packAny(isClassic), grantee, granter, }); } - public packAny(): Any { + public packAny(isClassic?: boolean): Any { return Any.fromPartial({ typeUrl: '/cosmos.feegrant.v1beta1.MsgGrantAllowance', - value: MsgGrantAllowance_pb.encode(this.toProto()).finish(), + value: MsgGrantAllowance_pb.encode(this.toProto(isClassic)).finish(), }); } - public static unpackAny(msgAny: Any): MsgGrantAllowance { + public static unpackAny(msgAny: Any, isClassic?: boolean): MsgGrantAllowance { return MsgGrantAllowance.fromProto( - MsgGrantAllowance_pb.decode(msgAny.value) + MsgGrantAllowance_pb.decode(msgAny.value), + isClassic ); } } export namespace MsgGrantAllowance { export interface Amino { - type: 'feegrant/MsgGrantAllowance'; + type: 'feegrant/MsgGrantAllowance' | 'cosmos-sdk/MsgGrantAllowance'; value: { granter: AccAddress; grantee: AccAddress; diff --git a/src/core/feegrant/msgs/MsgRevokeAllowance.ts b/src/core/feegrant/msgs/MsgRevokeAllowance.ts index 78cc602c3..5e7d82ff6 100644 --- a/src/core/feegrant/msgs/MsgRevokeAllowance.ts +++ b/src/core/feegrant/msgs/MsgRevokeAllowance.ts @@ -20,17 +20,23 @@ export class MsgRevokeAllowance extends JSONSerializable< super(); } - public static fromAmino(data: MsgRevokeAllowance.Amino): MsgRevokeAllowance { + public static fromAmino( + data: MsgRevokeAllowance.Amino, + _?: boolean + ): MsgRevokeAllowance { + _; const { value: { granter, grantee }, } = data; return new MsgRevokeAllowance(granter, grantee); } - public toAmino(): MsgRevokeAllowance.Amino { + public toAmino(isClassic?: boolean): MsgRevokeAllowance.Amino { const { granter, grantee } = this; return { - type: 'feegrant/MsgRevokeAllowance', + type: isClassic + ? 'feegrant/MsgRevokeAllowance' + : 'cosmos-sdk/MsgRevokeAllowance', value: { granter, grantee, @@ -38,12 +44,17 @@ export class MsgRevokeAllowance extends JSONSerializable< }; } - public static fromData(proto: MsgRevokeAllowance.Data): MsgRevokeAllowance { + public static fromData( + proto: MsgRevokeAllowance.Data, + _?: boolean + ): MsgRevokeAllowance { + _; const { granter, grantee } = proto; return new MsgRevokeAllowance(granter, grantee); } - public toData(): MsgRevokeAllowance.Data { + public toData(_?: boolean): MsgRevokeAllowance.Data { + _; const { granter, grantee } = this; return { '@type': '/cosmos.feegrant.v1beta1.MsgRevokeAllowance', @@ -52,11 +63,16 @@ export class MsgRevokeAllowance extends JSONSerializable< }; } - public static fromProto(proto: MsgRevokeAllowance.Proto): MsgRevokeAllowance { + public static fromProto( + proto: MsgRevokeAllowance.Proto, + _?: boolean + ): MsgRevokeAllowance { + _; return new MsgRevokeAllowance(proto.granter, proto.grantee); } - public toProto(): MsgRevokeAllowance.Proto { + public toProto(_?: boolean): MsgRevokeAllowance.Proto { + _; const { granter, grantee } = this; return MsgRevokeAllowance_pb.fromPartial({ grantee, @@ -64,23 +80,27 @@ export class MsgRevokeAllowance extends JSONSerializable< }); } - public packAny(): Any { + public packAny(isClassic?: boolean): Any { return Any.fromPartial({ typeUrl: '/cosmos.feegrant.v1beta1.MsgRevokeAllowance', - value: MsgRevokeAllowance_pb.encode(this.toProto()).finish(), + value: MsgRevokeAllowance_pb.encode(this.toProto(isClassic)).finish(), }); } - public static unpackAny(msgAny: Any): MsgRevokeAllowance { + public static unpackAny( + msgAny: Any, + isClassic?: boolean + ): MsgRevokeAllowance { return MsgRevokeAllowance.fromProto( - MsgRevokeAllowance_pb.decode(msgAny.value) + MsgRevokeAllowance_pb.decode(msgAny.value), + isClassic ); } } export namespace MsgRevokeAllowance { export interface Amino { - type: 'feegrant/MsgRevokeAllowance'; + type: 'feegrant/MsgRevokeAllowance' | 'cosmos-sdk/MsgRevokeAllowance'; value: { granter: AccAddress; grantee: AccAddress; diff --git a/src/core/gov/Proposal.ts b/src/core/gov/Proposal.ts index 6e0a8c6dd..bb6e13238 100644 --- a/src/core/gov/Proposal.ts +++ b/src/core/gov/Proposal.ts @@ -9,6 +9,18 @@ import { SoftwareUpgradeProposal, CancelSoftwareUpgradeProposal, } from '../upgrade/proposals'; +import { + ClearAdminProposal, + ExecuteContractProposal, + InstantiateContractProposal, + MigrateContractProposal, + PinCodesProposal, + StoreCodeProposal, + SudoContractProposal, + UnpinCodesProposal, + UpdateAdminProposal, + UpdateInstantiateConfigProposal, +} from '../wasm/proposals'; import { Proposal as Proposal_pb, ProposalStatus, @@ -54,7 +66,7 @@ export class Proposal extends JSONSerializable< super(); } - public static fromAmino(data: Proposal.Amino): Proposal { + public static fromAmino(data: Proposal.Amino, isClassic?: boolean): Proposal { const { id, content, @@ -69,7 +81,7 @@ export class Proposal extends JSONSerializable< return new Proposal( Number.parseInt(id), - Proposal.Content.fromAmino(content), + Proposal.Content.fromAmino(content, isClassic), status, { yes: new Int(final_tally_result.yes || 0), @@ -85,12 +97,12 @@ export class Proposal extends JSONSerializable< ); } - public toAmino(): Proposal.Amino { + public toAmino(isClassic?: boolean): Proposal.Amino { const { status, final_tally_result } = this; return { id: this.id.toFixed(), - content: this.content.toAmino(), + content: this.content.toAmino(isClassic), status: status, final_tally_result: { yes: final_tally_result.yes.toFixed(), @@ -106,7 +118,7 @@ export class Proposal extends JSONSerializable< }; } - public static fromData(data: Proposal.Data): Proposal { + public static fromData(data: Proposal.Data, isClassic?: boolean): Proposal { const { proposal_id, content, @@ -121,7 +133,7 @@ export class Proposal extends JSONSerializable< return new Proposal( Number.parseInt(proposal_id), - Proposal.Content.fromData(content), + Proposal.Content.fromData(content, isClassic), proposalStatusFromJSON(status), { yes: new Int(final_tally_result?.yes || 0), @@ -137,12 +149,12 @@ export class Proposal extends JSONSerializable< ); } - public toData(): Proposal.Data { + public toData(isClassic?: boolean): Proposal.Data { const { status, final_tally_result } = this; return { proposal_id: this.id.toFixed(), - content: this.content.toData(), + content: this.content.toData(isClassic), status: proposalStatusToJSON(status), final_tally_result: { yes: final_tally_result.yes.toString(), @@ -158,7 +170,7 @@ export class Proposal extends JSONSerializable< }; } - public static fromProto(data: Proposal.Proto): Proposal { + public static fromProto(data: Proposal.Proto, isClassic?: boolean): Proposal { const id = data.proposalId; const content = data.content; const status = data.status; @@ -171,7 +183,7 @@ export class Proposal extends JSONSerializable< return new Proposal( id.toNumber(), - Proposal.Content.fromProto(content as Any), + Proposal.Content.fromProto(content as Any, isClassic), status, { yes: new Int(final_tally_result?.yes || 0), @@ -187,7 +199,7 @@ export class Proposal extends JSONSerializable< ); } - public toProto(): Proposal.Proto { + public toProto(isClassic?: boolean): Proposal.Proto { const { status, final_tally_result } = this; let ftr: TallyResult | undefined; @@ -202,7 +214,7 @@ export class Proposal extends JSONSerializable< return Proposal_pb.fromPartial({ proposalId: Long.fromNumber(this.id), - content: this.content.packAny(), + content: this.content.packAny(isClassic), status, finalTallyResult: ftr, submitTime: this.submit_time, @@ -231,7 +243,17 @@ export namespace Proposal { | ParameterChangeProposal | SoftwareUpgradeProposal | CancelSoftwareUpgradeProposal - | ClientUpdateProposal; + | ClientUpdateProposal + | ClearAdminProposal + | ExecuteContractProposal + | InstantiateContractProposal + | MigrateContractProposal + | PinCodesProposal + | StoreCodeProposal + | SudoContractProposal + | UnpinCodesProposal + | UpdateAdminProposal + | UpdateInstantiateConfigProposal; export namespace Content { export type Amino = @@ -240,7 +262,17 @@ export namespace Proposal { | ParameterChangeProposal.Amino | SoftwareUpgradeProposal.Amino | CancelSoftwareUpgradeProposal.Amino - | ClientUpdateProposal.Amino; + | ClientUpdateProposal.Amino + | ClearAdminProposal.Amino + | ExecuteContractProposal.Amino + | InstantiateContractProposal.Amino + | MigrateContractProposal.Amino + | PinCodesProposal.Amino + | StoreCodeProposal.Amino + | SudoContractProposal.Amino + | UnpinCodesProposal.Amino + | UpdateAdminProposal.Amino + | UpdateInstantiateConfigProposal.Amino; export type Data = | TextProposal.Data @@ -248,7 +280,17 @@ export namespace Proposal { | ParameterChangeProposal.Data | SoftwareUpgradeProposal.Data | CancelSoftwareUpgradeProposal.Data - | ClientUpdateProposal.Data; + | ClientUpdateProposal.Data + | ClearAdminProposal.Data + | ExecuteContractProposal.Data + | InstantiateContractProposal.Data + | MigrateContractProposal.Data + | PinCodesProposal.Data + | StoreCodeProposal.Data + | SudoContractProposal.Data + | UnpinCodesProposal.Data + | UpdateAdminProposal.Data + | UpdateInstantiateConfigProposal.Data; export type Proto = | TextProposal.Proto @@ -256,57 +298,141 @@ export namespace Proposal { | ParameterChangeProposal.Proto | SoftwareUpgradeProposal.Proto | CancelSoftwareUpgradeProposal.Proto - | ClientUpdateProposal.Proto; + | ClientUpdateProposal.Proto + | ClearAdminProposal.Proto + | ExecuteContractProposal.Proto + | InstantiateContractProposal.Proto + | MigrateContractProposal.Proto + | PinCodesProposal.Proto + | StoreCodeProposal.Proto + | SudoContractProposal.Proto + | UnpinCodesProposal.Proto + | UpdateAdminProposal.Proto + | UpdateInstantiateConfigProposal.Proto; - export function fromAmino(amino: Proposal.Content.Amino): Proposal.Content { + export function fromAmino( + amino: Proposal.Content.Amino, + isClassic?: boolean + ): Proposal.Content { switch (amino.type) { case 'gov/TextProposal': - return TextProposal.fromAmino(amino); + case 'cosmos-sdk/TextProposal': + return TextProposal.fromAmino(amino, isClassic); case 'distribution/CommunityPoolSpendProposal': - return CommunityPoolSpendProposal.fromAmino(amino); + case 'cosmos-sdk/CommunityPoolSpendProposal': + return CommunityPoolSpendProposal.fromAmino(amino, isClassic); case 'params/ParameterChangeProposal': - return ParameterChangeProposal.fromAmino(amino); + case 'cosmos-sdk/ParameterChangeProposal': + return ParameterChangeProposal.fromAmino(amino, isClassic); case 'upgrade/SoftwareUpgradeProposal': - return SoftwareUpgradeProposal.fromAmino(amino); + case 'cosmos-sdk/SoftwareUpgradeProposal': + return SoftwareUpgradeProposal.fromAmino(amino, isClassic); case 'upgrade/CancelSoftwareUpgradeProposal': - return CancelSoftwareUpgradeProposal.fromAmino(amino); + case 'cosmos-sdk/CancelSoftwareUpgradeProposal': + return CancelSoftwareUpgradeProposal.fromAmino(amino, isClassic); case 'ibc/ClientUpdateProposal': - return ClientUpdateProposal.fromAmino(amino); + return ClientUpdateProposal.fromAmino(amino, isClassic); + case 'wasm/ClearAdminProposal': + return ClearAdminProposal.fromAmino(amino, isClassic); + case 'wasm/ExecuteContractProposal': + return ExecuteContractProposal.fromAmino(amino, isClassic); + case 'wasm/InstantiateContractProposal': + return InstantiateContractProposal.fromAmino(amino, isClassic); + case 'wasm/MigrateContractProposal': + return MigrateContractProposal.fromAmino(amino, isClassic); + case 'wasm/PinCodesProposal': + return PinCodesProposal.fromAmino(amino, isClassic); + case 'wasm/StoreCodeProposal': + return StoreCodeProposal.fromAmino(amino, isClassic); + case 'wasm/SudoContractProposal': + return SudoContractProposal.fromAmino(amino, isClassic); + case 'wasm/UnpinCodesProposal': + return UnpinCodesProposal.fromAmino(amino, isClassic); + case 'wasm/UpdateAdminProposal': + return UpdateAdminProposal.fromAmino(amino, isClassic); + case 'wasm/UpdateInstantiateConfigProposal': + return UpdateInstantiateConfigProposal.fromAmino(amino, isClassic); } } - export function fromData(data: Proposal.Content.Data): Proposal.Content { + export function fromData( + data: Proposal.Content.Data, + isClassic?: boolean + ): Proposal.Content { switch (data['@type']) { case '/cosmos.gov.v1beta1.TextProposal': - return TextProposal.fromData(data); + return TextProposal.fromData(data, isClassic); case '/cosmos.distribution.v1beta1.CommunityPoolSpendProposal': - return CommunityPoolSpendProposal.fromData(data); + return CommunityPoolSpendProposal.fromData(data, isClassic); case '/cosmos.params.v1beta1.ParameterChangeProposal': - return ParameterChangeProposal.fromData(data); + return ParameterChangeProposal.fromData(data, isClassic); case '/cosmos.upgrade.v1beta1.SoftwareUpgradeProposal': - return SoftwareUpgradeProposal.fromData(data); + return SoftwareUpgradeProposal.fromData(data, isClassic); case '/cosmos.upgrade.v1beta1.CancelSoftwareUpgradeProposal': - return CancelSoftwareUpgradeProposal.fromData(data); + return CancelSoftwareUpgradeProposal.fromData(data, isClassic); case '/ibc.core.client.v1.ClientUpdateProposal': - return ClientUpdateProposal.fromData(data); + return ClientUpdateProposal.fromData(data, isClassic); + case '/cosmwasm.wasm.v1.ClearAdminProposal': + return ClearAdminProposal.fromData(data, isClassic); + case '/cosmwasm.wasm.v1.ExecuteContractProposal': + return ExecuteContractProposal.fromData(data, isClassic); + case '/cosmwasm.wasm.v1.InstantiateContractProposal': + return InstantiateContractProposal.fromData(data, isClassic); + case '/cosmwasm.wasm.v1.MigrateContractProposal': + return MigrateContractProposal.fromData(data, isClassic); + case '/cosmwasm.wasm.v1.PinCodesProposal': + return PinCodesProposal.fromData(data, isClassic); + case '/cosmwasm.wasm.v1.StoreCodeProposal': + return StoreCodeProposal.fromData(data, isClassic); + case '/cosmwasm.wasm.v1.SudoContractProposal': + return SudoContractProposal.fromData(data, isClassic); + case '/cosmwasm.wasm.v1.UnpinCodesProposal': + return UnpinCodesProposal.fromData(data, isClassic); + case '/cosmwasm.wasm.v1.UpdateAdminProposal': + return UpdateAdminProposal.fromData(data, isClassic); + case '/cosmwasm.wasm.v1.UpdateInstantiateConfigProposal': + return UpdateInstantiateConfigProposal.fromData(data, isClassic); } } - export function fromProto(anyProto: Any): Proposal.Content { + export function fromProto( + anyProto: Any, + isClassic?: boolean + ): Proposal.Content { const typeUrl = anyProto.typeUrl; switch (typeUrl) { case '/cosmos.gov.v1beta1.TextProposal': - return TextProposal.unpackAny(anyProto); + return TextProposal.unpackAny(anyProto, isClassic); case '/cosmos.distribution.v1beta1.CommunityPoolSpendProposal': - return CommunityPoolSpendProposal.unpackAny(anyProto); + return CommunityPoolSpendProposal.unpackAny(anyProto, isClassic); case '/cosmos.params.v1beta1.ParameterChangeProposal': - return ParameterChangeProposal.unpackAny(anyProto); + return ParameterChangeProposal.unpackAny(anyProto, isClassic); case '/cosmos.upgrade.v1beta1.SoftwareUpgradeProposal': - return SoftwareUpgradeProposal.unpackAny(anyProto); + return SoftwareUpgradeProposal.unpackAny(anyProto, isClassic); case '/cosmos.upgrade.v1beta1.CancelSoftwareUpgradeProposal': - return CancelSoftwareUpgradeProposal.unpackAny(anyProto); + return CancelSoftwareUpgradeProposal.unpackAny(anyProto, isClassic); case '/ibc.core.client.v1.ClientUpdateProposal': - return ClientUpdateProposal.unpackAny(anyProto); + return ClientUpdateProposal.unpackAny(anyProto, isClassic); + case '/cosmwasm.wasm.v1.ClearAdminProposal': + return ClearAdminProposal.unpackAny(anyProto, isClassic); + case '/cosmwasm.wasm.v1.ExecuteContractProposal': + return ExecuteContractProposal.unpackAny(anyProto, isClassic); + case '/cosmwasm.wasm.v1.InstantiateContractProposal': + return InstantiateContractProposal.unpackAny(anyProto, isClassic); + case '/cosmwasm.wasm.v1.MigrateContractProposal': + return MigrateContractProposal.unpackAny(anyProto, isClassic); + case '/cosmwasm.wasm.v1.PinCodesProposal': + return PinCodesProposal.unpackAny(anyProto, isClassic); + case '/cosmwasm.wasm.v1.StoreCodeProposal': + return StoreCodeProposal.unpackAny(anyProto, isClassic); + case '/cosmwasm.wasm.v1.SudoContractProposal': + return SudoContractProposal.unpackAny(anyProto, isClassic); + case '/cosmwasm.wasm.v1.UnpinCodesProposal': + return UnpinCodesProposal.unpackAny(anyProto, isClassic); + case '/cosmwasm.wasm.v1.UpdateAdminProposal': + return UpdateAdminProposal.unpackAny(anyProto, isClassic); + case '/cosmwasm.wasm.v1.UpdateInstantiateConfigProposal': + return UpdateInstantiateConfigProposal.unpackAny(anyProto, isClassic); } throw `Proposal content ${typeUrl} not recognized`; diff --git a/src/core/gov/Vote.ts b/src/core/gov/Vote.ts index 5d5ad9b1a..06c3c9737 100644 --- a/src/core/gov/Vote.ts +++ b/src/core/gov/Vote.ts @@ -26,7 +26,8 @@ export class Vote extends JSONSerializable { super(); } - public static fromAmino(data: Vote.Amino): Vote { + public static fromAmino(data: Vote.Amino, _?: boolean): Vote { + _; const { proposal_id, voter, options } = data; return new Vote( Number.parseInt(proposal_id), @@ -35,7 +36,8 @@ export class Vote extends JSONSerializable { ); } - public toAmino(): Vote.Amino { + public toAmino(_?: boolean): Vote.Amino { + _; const { proposal_id, voter, options } = this; const res: Vote.Amino = { @@ -47,7 +49,8 @@ export class Vote extends JSONSerializable { return res; } - public static fromData(data: Vote.Data): Vote { + public static fromData(data: Vote.Data, _?: boolean): Vote { + _; const { proposal_id, voter, options } = data; return new Vote( Number.parseInt(proposal_id), @@ -56,7 +59,8 @@ export class Vote extends JSONSerializable { ); } - public toData(): Vote.Data { + public toData(_?: boolean): Vote.Data { + _; const { proposal_id, voter, options } = this; const res: Vote.Data = { @@ -68,7 +72,8 @@ export class Vote extends JSONSerializable { return res; } - public static fromProto(proto: Vote.Proto): Vote { + public static fromProto(proto: Vote.Proto, _?: boolean): Vote { + _; return new Vote( proto.proposalId.toNumber(), proto.voter, @@ -76,7 +81,8 @@ export class Vote extends JSONSerializable { ); } - public toProto(): Vote.Proto { + public toProto(_?: boolean): Vote.Proto { + _; const { proposal_id, voter, options } = this; return Vote_pb.fromPartial({ options: options.map(o => o.toProto()), @@ -116,12 +122,14 @@ export class WeightedVoteOption extends JSONSerializable< this.weight = new Dec(weight); } - public static fromAmino(data: WeightedVoteOption.Amino): WeightedVoteOption { + public static fromAmino(data: WeightedVoteOption.Amino, _?: boolean): WeightedVoteOption { + _; const { option, weight } = data; return new WeightedVoteOption(option, weight); } - public toAmino(): WeightedVoteOption.Amino { + public toAmino(_?: boolean): WeightedVoteOption.Amino { + _; const { option, weight } = this; return { option, @@ -129,12 +137,14 @@ export class WeightedVoteOption extends JSONSerializable< }; } - public static fromData(data: WeightedVoteOption.Data): WeightedVoteOption { + public static fromData(data: WeightedVoteOption.Data, _?: boolean): WeightedVoteOption { + _; const { option, weight } = data; return new WeightedVoteOption(option, weight); } - public toData(): WeightedVoteOption.Data { + public toData(_?: boolean): WeightedVoteOption.Data { + _; const { option, weight } = this; return { option, @@ -142,11 +152,13 @@ export class WeightedVoteOption extends JSONSerializable< }; } - public static fromProto(proto: WeightedVoteOption.Proto): WeightedVoteOption { + public static fromProto(proto: WeightedVoteOption.Proto, _?: boolean): WeightedVoteOption { + _; return new WeightedVoteOption(proto.option, proto.weight); } - public toProto(): WeightedVoteOption.Proto { + public toProto(_?: boolean): WeightedVoteOption.Proto { + _; const { option, weight } = this; return WeightedVoteOption_pb.fromPartial({ option, diff --git a/src/core/gov/msgs/MsgDeposit.data.json b/src/core/gov/msgs/MsgDeposit.data.json index 0548ff9ad..2997ef6a2 100644 --- a/src/core/gov/msgs/MsgDeposit.data.json +++ b/src/core/gov/msgs/MsgDeposit.data.json @@ -1,1900 +1,2139 @@ { - "total_count": "14", - "count": "14", - "page_number": "1", - "page_total": "1", - "limit": "100", - "txs": [{ - "height": "198", - "txhash": "D414722B1D51C087119C1CE5BBDAAA39BCB454FC9BD24F30897FC8361B6D3D10", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "1uluna" - }, - { - "key": "proposal_id", - "value": "1" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "1uluna" - } - ] - } - ] - }], - "gas_wanted": "55352", - "gas_used": "42559", - "tx": { - "type": "core/StdTx", - "value": { - "msg": [{ - "type": "gov/MsgDeposit", - "value": { - "proposal_id": "1", - "depositor": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c", - "amount": [{ - "denom": "uluna", - "amount": "1" - }] - } - }], - "fee": { - "amount": [{ - "denom": "uluna", - "amount": "0" - }], - "gas": "55352" - }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "An/QGB4F5r/sCIEbVaYO1SuY/NHfWdyW5fhQmKNAEgGA" - }, - "signature": "/e2LkcUFNcSTfVk7Gn/4J4Q4C2RUt54/dE4+heWKzGp+gA6gEquOoGLIAMpvUdJxA4DjO9l710OSCgkkcAmtbg==" - }], - "memo": "Syncnode's iOS Wallet" - } - }, - "timestamp": "2019-12-13T17:19:41Z", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "1uluna" - }, - { - "key": "proposal_id", - "value": "1" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "1uluna" - } - ] - } - ] - }, - { - "height": "978", - "txhash": "24495D2E4B4193DEF45C5246C6D90CEE4519F09C9E7FD87720AF94E7ACAD0226", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "1uluna" - }, - { - "key": "proposal_id", - "value": "1" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "1uluna" - } - ] - } - ] - }], - "gas_wanted": "87200", - "gas_used": "57467", - "tx": { - "type": "core/StdTx", - "value": { - "msg": [{ - "type": "gov/MsgDeposit", - "value": { - "proposal_id": "1", - "depositor": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l", - "amount": [{ - "denom": "uluna", - "amount": "1" - }] - } - }], - "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "1308" - }], - "gas": "87200" - }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "AgfYBjlvfQtwveh1VkpLc2Es0sw/KqkYo56g7EGGzQcB" - }, - "signature": "NqHAA4etbibV596KPKvu2ylaZaJHf0RuJtt/3I8WURUoBfKyPRartMgNCckO0MFciWVmM6k0BIqBjXTbXoyMVA==" - }], - "memo": "" - } - }, - "timestamp": "2019-12-13T18:47:54Z", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "1uluna" - }, - { - "key": "proposal_id", - "value": "1" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "1uluna" - } - ] - } - ] - }, - { - "height": "5059", - "txhash": "0D9A9E3316FE6A6ABE92B3EA8D85CF15F39DC7926AC3A3BD48DDD979A054E12F", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1yazda3hv6hk7y53m4nj5e9eqpnrmavcrktcs73" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1yazda3hv6hk7y53m4nj5e9eqpnrmavcrktcs73" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "1uluna" - }, - { - "key": "proposal_id", - "value": "1" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "1uluna" - } - ] - } - ] - }], - "gas_wanted": "87333", - "gas_used": "57539", - "tx": { - "type": "core/StdTx", - "value": { - "msg": [{ - "type": "gov/MsgDeposit", - "value": { - "proposal_id": "1", - "depositor": "terra1yazda3hv6hk7y53m4nj5e9eqpnrmavcrktcs73", - "amount": [{ - "denom": "uluna", - "amount": "1" - }] - } - }], - "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "1310" - }], - "gas": "87333" - }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "A30Cq4pAsDWhdfezKg6RVEXiZpPvO085v4wNob/exla0" - }, - "signature": "lUF2RTWevtdigpgECox4UxlEzYNJv3oDeqZkGLNkSgdLVndDb27BY/5NAAAKbPFbv2fRQOpI+SA8HwEcrydKlQ==" - }], - "memo": "" - } - }, - "timestamp": "2019-12-14T02:16:33Z", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1yazda3hv6hk7y53m4nj5e9eqpnrmavcrktcs73" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1yazda3hv6hk7y53m4nj5e9eqpnrmavcrktcs73" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "1uluna" - }, - { - "key": "proposal_id", - "value": "1" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "1uluna" - } - ] - } - ] - }, - { - "height": "37513", - "txhash": "DB7FD7F02CA7C02D55A31C41110B944360F06A44E387DC7CAF2F0F5040B871E9", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "1uluna" - }, - { - "key": "proposal_id", - "value": "1" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "1uluna" - } - ] - } - ] - }], - "gas_wanted": "55519", - "gas_used": "42687", - "tx": { - "type": "core/StdTx", - "value": { - "msg": [{ - "type": "gov/MsgDeposit", - "value": { - "proposal_id": "1", - "depositor": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c", - "amount": [{ - "denom": "uluna", - "amount": "1" - }] - } - }], - "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "0" - }], - "gas": "55519" - }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "An/QGB4F5r/sCIEbVaYO1SuY/NHfWdyW5fhQmKNAEgGA" - }, - "signature": "AP2T9vM+hXlS9Y6+vmYrgDP0L2qx5O7cvCHsTER8HdIRuB4MujjWFNARVoL9Qvwg7R1PLVVooQN1ZayEfm+DPw==" - }], - "memo": "Syncnode's iOS Wallet" - } - }, - "timestamp": "2019-12-16T13:44:08Z", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "1uluna" - }, - { - "key": "proposal_id", - "value": "1" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "1uluna" - } - ] - } - ] - }, - { - "height": "85239", - "txhash": "A686D04C61C44B7C7DF6E0D828FA6B3944A348AD0CC1C0A88FB5CD4E4B09F0E9", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1wttj8sugczlusz3c7sg028e2h64dqfve6hpzgf" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1wttj8sugczlusz3c7sg028e2h64dqfve6hpzgf" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "1uluna" - }, - { - "key": "proposal_id", - "value": "1" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "1uluna" - } - ] - } - ] - }], - "gas_wanted": "73191", - "gas_used": "56281", - "tx": { - "type": "core/StdTx", - "value": { - "msg": [{ - "type": "gov/MsgDeposit", - "value": { - "proposal_id": "1", - "depositor": "terra1wttj8sugczlusz3c7sg028e2h64dqfve6hpzgf", - "amount": [{ - "denom": "uluna", - "amount": "1" - }] - } - }], - "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "3000" - }], - "gas": "73191" - }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "AuVBUPgKvSkVxNlfBjhY7BBClasvsWDHKbR37DWwLmbq" - }, - "signature": "LTaP7nVVWQbU9QbmKoNMfC9s7css4WAyia+Rs5k+1f8CwIP7s9dEx4ubXjkvtCt0TofM9n/xtsxcjXOL9fDtNQ==" - }], - "memo": "Syncnode's iOS Wallet" - } - }, - "timestamp": "2019-12-20T03:48:00Z", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1wttj8sugczlusz3c7sg028e2h64dqfve6hpzgf" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1wttj8sugczlusz3c7sg028e2h64dqfve6hpzgf" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "1uluna" - }, - { - "key": "proposal_id", - "value": "1" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "1uluna" - } - ] - } - ] - }, - { - "height": "124684", - "txhash": "71613C04A7490A7AD3D1F049698C420BCE409D7BDA76CA1C8ADE048A4EB5D184", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1vxawyk2ewxysxldu0x3p8xw7974p97uvftqccv" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1vxawyk2ewxysxldu0x3p8xw7974p97uvftqccv" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "1000000uluna" - }, - { - "key": "proposal_id", - "value": "1" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "1000000uluna" - } - ] - } - ] - }], - "gas_wanted": "82000", - "gas_used": "53985", - "tx": { - "type": "core/StdTx", - "value": { - "msg": [{ - "type": "gov/MsgDeposit", - "value": { - "proposal_id": "1", - "depositor": "terra1vxawyk2ewxysxldu0x3p8xw7974p97uvftqccv", - "amount": [{ - "denom": "uluna", - "amount": "1000000" - }] - } - }], - "fee": { - "amount": [{ - "denom": "uluna", - "amount": "1230" - }], - "gas": "82000" - }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "Am3lehYh9tY92eS5lg98gBkfSwO0GUxQgXGE3KBcm+DT" - }, - "signature": "4l8x0ia9VpbmkQUEMR+5oa14wZxeZdT274OURnzmoeMw+EpADnGeDmrghUk02JBasbsGRaeUI8vZUn54tSSXcQ==" - }], - "memo": "" - } - }, - "timestamp": "2019-12-23T03:06:55Z", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1vxawyk2ewxysxldu0x3p8xw7974p97uvftqccv" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1vxawyk2ewxysxldu0x3p8xw7974p97uvftqccv" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "1000000uluna" - }, - { - "key": "proposal_id", - "value": "1" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "1000000uluna" - } - ] - } - ] - }, - { - "height": "182324", - "txhash": "96E89A89465CDAFBA11612F7C8AB785CD17FB2AEA575ACB51A0B04F210388248", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "1uluna" - }, - { - "key": "proposal_id", - "value": "1" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "1uluna" - } - ] - } - ] - }], - "gas_wanted": "56145", - "gas_used": "43169", - "tx": { - "type": "core/StdTx", - "value": { - "msg": [{ - "type": "gov/MsgDeposit", - "value": { - "proposal_id": "1", - "depositor": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c", - "amount": [{ - "denom": "uluna", - "amount": "1" - }] - } - }], - "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "0" - }], - "gas": "56145" - }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "An/QGB4F5r/sCIEbVaYO1SuY/NHfWdyW5fhQmKNAEgGA" - }, - "signature": "vLRfeMP6ybgkEqYNp6mik9ol96I5wxTIyjVftHcFkYBXu2iCHyC/BPTFkbIkPSaR3+2roTardxEw5xoxPPe0Xw==" - }], - "memo": "Syncnode's iOS Wallet 🙀" - } - }, - "timestamp": "2019-12-27T11:39:32Z", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "1uluna" - }, - { - "key": "proposal_id", - "value": "1" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "1uluna" - } - ] - } - ] - }, - { - "height": "184711", - "txhash": "8FBD62798D8EBE0F8D30AC0F40A7EB2B2720A614EAF1846CA960D135FAF30FAA", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "1uluna" - }, - { - "key": "proposal_id", - "value": "1" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "1uluna" - } - ] - } - ] - }], - "gas_wanted": "56145", - "gas_used": "43169", - "tx": { - "type": "core/StdTx", - "value": { - "msg": [{ - "type": "gov/MsgDeposit", - "value": { - "proposal_id": "1", - "depositor": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c", - "amount": [{ - "denom": "uluna", - "amount": "1" - }] - } - }], - "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "0" - }], - "gas": "56145" - }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "An/QGB4F5r/sCIEbVaYO1SuY/NHfWdyW5fhQmKNAEgGA" - }, - "signature": "LpaIBhSjEMFRuWFKljqSQoQHAzMjhBEKmdiUWVJvxtlCreFWOgPV+94BLrH3g19b0BzNqwph+35BEYv9nHg9Yw==" - }], - "memo": "Syncnode's iOS Wallet 🙀" - } - }, - "timestamp": "2019-12-27T15:58:38Z", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "1uluna" - }, - { - "key": "proposal_id", - "value": "1" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "1uluna" - } - ] - } - ] - }, - { - "height": "339178", - "txhash": "6CB25CADBEE2EC4FE74CFD5B9309453ACD5B611762D9E1EBBA99A4E2582BC4C1", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "19999990uluna" - }, - { - "key": "proposal_id", - "value": "2" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "19999990uluna" - } - ] - } - ] - }], - "gas_wanted": "144466", - "gas_used": "95751", - "tx": { - "type": "core/StdTx", - "value": { - "msg": [{ - "type": "gov/MsgDeposit", - "value": { - "proposal_id": "2", - "depositor": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l", - "amount": [{ - "denom": "uluna", - "amount": "19999990" - }] - } - }], - "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "2167" - }], - "gas": "144466" - }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "AgfYBjlvfQtwveh1VkpLc2Es0sw/KqkYo56g7EGGzQcB" - }, - "signature": "F0eKj1DHN7VAC8tCnjKxlvfjfNh2YBG4qBu7dRu69JYUqxc6YBuftwygvJEuhsLtCLtPYVDhwwddqt/4Y8t/XA==" - }], - "memo": "" - } - }, - "timestamp": "2020-01-08T08:39:52Z", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "19999990uluna" - }, - { - "key": "proposal_id", - "value": "2" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "19999990uluna" - } - ] - } - ] - }, - { - "height": "339415", - "txhash": "53FFB6A151AE377CABFBDEF2B91B9C362397B568283525B943342DCD0B4AFC67", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "30000000uluna" - }, - { - "key": "proposal_id", - "value": "2" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "30000000uluna" - } - ] - } - ] - }], - "gas_wanted": "146600", - "gas_used": "97371", - "tx": { - "type": "core/StdTx", - "value": { - "msg": [{ - "type": "gov/MsgDeposit", - "value": { - "proposal_id": "2", - "depositor": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l", - "amount": [{ - "denom": "uluna", - "amount": "30000000" - }] - } - }], - "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "2199" - }], - "gas": "146600" - }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "AgfYBjlvfQtwveh1VkpLc2Es0sw/KqkYo56g7EGGzQcB" - }, - "signature": "y0TAbtNXpyjJnbQEjMyJ37g4/tK139J4zH/U2W5pUIdKKX8Uh3INiSK+rneicBRazr1QND3ph+CLlmHB2p3o1w==" - }], - "memo": "" - } - }, - "timestamp": "2020-01-08T09:05:49Z", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "30000000uluna" - }, - { - "key": "proposal_id", - "value": "2" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "30000000uluna" - } - ] - } - ] - }, - { - "height": "342897", - "txhash": "71AF6133CF0EBCCF8C835CD5DFE21B9BD6D16A7C01FFD3921AD0A17B8A31ED39", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "1000000uluna" - }, - { - "key": "proposal_id", - "value": "2" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "1000000uluna" - } - ] - } - ] - }], - "gas_wanted": "128191", - "gas_used": "98394", - "tx": { - "type": "core/StdTx", - "value": { - "msg": [{ - "type": "gov/MsgDeposit", - "value": { - "proposal_id": "2", - "depositor": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c", - "amount": [{ - "denom": "uluna", - "amount": "1000000" - }] - } - }], - "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "4000" - }], - "gas": "128191" - }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "An/QGB4F5r/sCIEbVaYO1SuY/NHfWdyW5fhQmKNAEgGA" - }, - "signature": "m1UnrxCvVUww1oJ27Uo9+1lwCma2K8hlf1Gi2LMXepJwHQ4uc6AWjJHLlxuEgaSCQ1lFqnl0FE003Zw6iMqW6w==" - }], - "memo": "Syncnode's iOS Wallet 🙀" - } - }, - "timestamp": "2020-01-08T15:27:50Z", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "1000000uluna" - }, - { - "key": "proposal_id", - "value": "2" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "1000000uluna" - } - ] - } - ] - }, - { - "height": "351020", - "txhash": "5A713083D785BE770CA01B5B8E7EAC263CBBD3B9975B9DC98F526CC9CD6C0064", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "1uluna" - }, - { - "key": "proposal_id", - "value": "2" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "1uluna" - } - ] - } - ] - }], - "gas_wanted": "128141", - "gas_used": "98190", - "tx": { - "type": "core/StdTx", - "value": { - "msg": [{ - "type": "gov/MsgDeposit", - "value": { - "proposal_id": "2", - "depositor": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c", - "amount": [{ - "denom": "uluna", - "amount": "1" - }] - } - }], - "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "4000" - }], - "gas": "128141" - }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "An/QGB4F5r/sCIEbVaYO1SuY/NHfWdyW5fhQmKNAEgGA" - }, - "signature": "OhP5rHxO8Vxtr1KUxLDnryscLC6dLj2ztZy6Mf0nGjwYZs3s2xL6AYZJe4hj/N04x2mKsM64O/UzzKTg754VXA==" - }], - "memo": "Syncnode's iOS Wallet 🙀" - } - }, - "timestamp": "2020-01-09T06:16:11Z", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "1uluna" - }, - { - "key": "proposal_id", - "value": "2" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "1uluna" - } - ] - } - ] - }, - { - "height": "373735", - "txhash": "F26968321EF51AD7BF33DE19D23E61B5DA12D6E49435EB338B91DEC83940AF86", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1tv2j73xnqxgcpmdfl7kvwj3tr05h0ytxw3fu0n" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1tv2j73xnqxgcpmdfl7kvwj3tr05h0ytxw3fu0n" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "461000000uluna" - }, - { - "key": "proposal_id", - "value": "2" - }, - { - "key": "voting_period_start", - "value": "2" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "461000000uluna" - } - ] - } - ] - }], - "gas_wanted": "214333", - "gas_used": "142799", - "tx": { - "type": "core/StdTx", - "value": { - "msg": [{ - "type": "gov/MsgDeposit", - "value": { - "proposal_id": "2", - "depositor": "terra1tv2j73xnqxgcpmdfl7kvwj3tr05h0ytxw3fu0n", - "amount": [{ - "denom": "uluna", - "amount": "461000000" - }] - } - }], - "fee": { - "amount": [{ - "denom": "uluna", - "amount": "3215" - }], - "gas": "214333" - }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "A7SCnpoYpfY10LoTwUHBweQ8Q0nRUQrPw/mawKSvhLsV" - }, - "signature": "S0H8omxZvr90nf75JeFGaq5wNZY//InbSYKqnQUGGPJjt2S9UJ4rzullwGL4TKBBLgJ1bJy3LUJygKDVV4zbyw==" - }], - "memo": "" - } - }, - "timestamp": "2020-01-10T23:46:08Z", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1tv2j73xnqxgcpmdfl7kvwj3tr05h0ytxw3fu0n" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1tv2j73xnqxgcpmdfl7kvwj3tr05h0ytxw3fu0n" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "461000000uluna" - }, - { - "key": "proposal_id", - "value": "2" - }, - { - "key": "voting_period_start", - "value": "2" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "461000000uluna" - } - ] - } - ] - }, - { - "height": "376674", - "txhash": "7B6F415475C54DAFF2EDEF9A94D04708B25C400CBA84337992BA733C27088B7B", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1nywja8qykzgcva579tyuarglyv9dc75y8cyw3f" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1nywja8qykzgcva579tyuarglyv9dc75y8cyw3f" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "13000000uluna" - }, - { - "key": "proposal_id", - "value": "3" - }, - { - "key": "voting_period_start", - "value": "3" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "13000000uluna" - } - ] - } - ] - }], - "gas_wanted": "169000", - "gas_used": "111985", - "tx": { - "type": "core/StdTx", - "value": { - "msg": [{ - "type": "gov/MsgDeposit", - "value": { - "proposal_id": "3", - "depositor": "terra1nywja8qykzgcva579tyuarglyv9dc75y8cyw3f", - "amount": [{ - "denom": "uluna", - "amount": "13000000" - }] - } - }], - "fee": { - "amount": [{ - "denom": "uluna", - "amount": "2535" - }], - "gas": "169000" - }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "Al4E+xICUrTA/YTMCqGne8BFmpreF+Xh9YsLV8y19ejC" - }, - "signature": "AOLefuLSRtirCEUlMSs5K5mMelLHyKSTou0orSlfeNULW0cf7ImHeVYNz8SLuytQnMF6ZJFEJffNt28M+VOfgA==" - }], - "memo": "" - } - }, - "timestamp": "2020-01-11T05:08:30Z", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1nywja8qykzgcva579tyuarglyv9dc75y8cyw3f" - }, - { - "key": "module", - "value": "governance" - }, - { - "key": "sender", - "value": "terra1nywja8qykzgcva579tyuarglyv9dc75y8cyw3f" - }, - { - "key": "action", - "value": "deposit" - } - ] - }, - { - "type": "proposal_deposit", - "attributes": [{ - "key": "amount", - "value": "13000000uluna" - }, - { - "key": "proposal_id", - "value": "3" - }, - { - "key": "voting_period_start", - "value": "3" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" - }, - { - "key": "amount", - "value": "13000000uluna" - } - ] - } - ] - } - ] -} + "total_count": "14", + "count": "14", + "page_number": "1", + "page_total": "1", + "limit": "100", + "txs": [ + { + "height": "198", + "txhash": "D414722B1D51C087119C1CE5BBDAAA39BCB454FC9BD24F30897FC8361B6D3D10", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + } + ], + "gas_wanted": "55352", + "gas_used": "42559", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "gov/MsgDeposit", + "value": { + "proposal_id": "1", + "depositor": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c", + "amount": [ + { + "denom": "uluna", + "amount": "1" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "uluna", + "amount": "0" + } + ], + "gas": "55352" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "An/QGB4F5r/sCIEbVaYO1SuY/NHfWdyW5fhQmKNAEgGA" + }, + "signature": "/e2LkcUFNcSTfVk7Gn/4J4Q4C2RUt54/dE4+heWKzGp+gA6gEquOoGLIAMpvUdJxA4DjO9l710OSCgkkcAmtbg==" + } + ], + "memo": "Syncnode's iOS Wallet" + } + }, + "timestamp": "2019-12-13T17:19:41Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + }, + { + "height": "978", + "txhash": "24495D2E4B4193DEF45C5246C6D90CEE4519F09C9E7FD87720AF94E7ACAD0226", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + } + ], + "gas_wanted": "87200", + "gas_used": "57467", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "gov/MsgDeposit", + "value": { + "proposal_id": "1", + "depositor": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l", + "amount": [ + { + "denom": "uluna", + "amount": "1" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "ukrw", + "amount": "1308" + } + ], + "gas": "87200" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AgfYBjlvfQtwveh1VkpLc2Es0sw/KqkYo56g7EGGzQcB" + }, + "signature": "NqHAA4etbibV596KPKvu2ylaZaJHf0RuJtt/3I8WURUoBfKyPRartMgNCckO0MFciWVmM6k0BIqBjXTbXoyMVA==" + } + ], + "memo": "" + } + }, + "timestamp": "2019-12-13T18:47:54Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + }, + { + "height": "5059", + "txhash": "0D9A9E3316FE6A6ABE92B3EA8D85CF15F39DC7926AC3A3BD48DDD979A054E12F", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1yazda3hv6hk7y53m4nj5e9eqpnrmavcrktcs73" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1yazda3hv6hk7y53m4nj5e9eqpnrmavcrktcs73" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + } + ], + "gas_wanted": "87333", + "gas_used": "57539", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "gov/MsgDeposit", + "value": { + "proposal_id": "1", + "depositor": "terra1yazda3hv6hk7y53m4nj5e9eqpnrmavcrktcs73", + "amount": [ + { + "denom": "uluna", + "amount": "1" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "ukrw", + "amount": "1310" + } + ], + "gas": "87333" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A30Cq4pAsDWhdfezKg6RVEXiZpPvO085v4wNob/exla0" + }, + "signature": "lUF2RTWevtdigpgECox4UxlEzYNJv3oDeqZkGLNkSgdLVndDb27BY/5NAAAKbPFbv2fRQOpI+SA8HwEcrydKlQ==" + } + ], + "memo": "" + } + }, + "timestamp": "2019-12-14T02:16:33Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1yazda3hv6hk7y53m4nj5e9eqpnrmavcrktcs73" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1yazda3hv6hk7y53m4nj5e9eqpnrmavcrktcs73" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + }, + { + "height": "37513", + "txhash": "DB7FD7F02CA7C02D55A31C41110B944360F06A44E387DC7CAF2F0F5040B871E9", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + } + ], + "gas_wanted": "55519", + "gas_used": "42687", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "gov/MsgDeposit", + "value": { + "proposal_id": "1", + "depositor": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c", + "amount": [ + { + "denom": "uluna", + "amount": "1" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "ukrw", + "amount": "0" + } + ], + "gas": "55519" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "An/QGB4F5r/sCIEbVaYO1SuY/NHfWdyW5fhQmKNAEgGA" + }, + "signature": "AP2T9vM+hXlS9Y6+vmYrgDP0L2qx5O7cvCHsTER8HdIRuB4MujjWFNARVoL9Qvwg7R1PLVVooQN1ZayEfm+DPw==" + } + ], + "memo": "Syncnode's iOS Wallet" + } + }, + "timestamp": "2019-12-16T13:44:08Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + }, + { + "height": "85239", + "txhash": "A686D04C61C44B7C7DF6E0D828FA6B3944A348AD0CC1C0A88FB5CD4E4B09F0E9", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1wttj8sugczlusz3c7sg028e2h64dqfve6hpzgf" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1wttj8sugczlusz3c7sg028e2h64dqfve6hpzgf" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + } + ], + "gas_wanted": "73191", + "gas_used": "56281", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "gov/MsgDeposit", + "value": { + "proposal_id": "1", + "depositor": "terra1wttj8sugczlusz3c7sg028e2h64dqfve6hpzgf", + "amount": [ + { + "denom": "uluna", + "amount": "1" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "ukrw", + "amount": "3000" + } + ], + "gas": "73191" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AuVBUPgKvSkVxNlfBjhY7BBClasvsWDHKbR37DWwLmbq" + }, + "signature": "LTaP7nVVWQbU9QbmKoNMfC9s7css4WAyia+Rs5k+1f8CwIP7s9dEx4ubXjkvtCt0TofM9n/xtsxcjXOL9fDtNQ==" + } + ], + "memo": "Syncnode's iOS Wallet" + } + }, + "timestamp": "2019-12-20T03:48:00Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1wttj8sugczlusz3c7sg028e2h64dqfve6hpzgf" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1wttj8sugczlusz3c7sg028e2h64dqfve6hpzgf" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + }, + { + "height": "124684", + "txhash": "71613C04A7490A7AD3D1F049698C420BCE409D7BDA76CA1C8ADE048A4EB5D184", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1vxawyk2ewxysxldu0x3p8xw7974p97uvftqccv" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1vxawyk2ewxysxldu0x3p8xw7974p97uvftqccv" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1000000uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1000000uluna" + } + ] + } + ] + } + ], + "gas_wanted": "82000", + "gas_used": "53985", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "gov/MsgDeposit", + "value": { + "proposal_id": "1", + "depositor": "terra1vxawyk2ewxysxldu0x3p8xw7974p97uvftqccv", + "amount": [ + { + "denom": "uluna", + "amount": "1000000" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "uluna", + "amount": "1230" + } + ], + "gas": "82000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Am3lehYh9tY92eS5lg98gBkfSwO0GUxQgXGE3KBcm+DT" + }, + "signature": "4l8x0ia9VpbmkQUEMR+5oa14wZxeZdT274OURnzmoeMw+EpADnGeDmrghUk02JBasbsGRaeUI8vZUn54tSSXcQ==" + } + ], + "memo": "" + } + }, + "timestamp": "2019-12-23T03:06:55Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1vxawyk2ewxysxldu0x3p8xw7974p97uvftqccv" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1vxawyk2ewxysxldu0x3p8xw7974p97uvftqccv" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1000000uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1000000uluna" + } + ] + } + ] + }, + { + "height": "182324", + "txhash": "96E89A89465CDAFBA11612F7C8AB785CD17FB2AEA575ACB51A0B04F210388248", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + } + ], + "gas_wanted": "56145", + "gas_used": "43169", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "gov/MsgDeposit", + "value": { + "proposal_id": "1", + "depositor": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c", + "amount": [ + { + "denom": "uluna", + "amount": "1" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "ukrw", + "amount": "0" + } + ], + "gas": "56145" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "An/QGB4F5r/sCIEbVaYO1SuY/NHfWdyW5fhQmKNAEgGA" + }, + "signature": "vLRfeMP6ybgkEqYNp6mik9ol96I5wxTIyjVftHcFkYBXu2iCHyC/BPTFkbIkPSaR3+2roTardxEw5xoxPPe0Xw==" + } + ], + "memo": "Syncnode's iOS Wallet 🙀" + } + }, + "timestamp": "2019-12-27T11:39:32Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + }, + { + "height": "184711", + "txhash": "8FBD62798D8EBE0F8D30AC0F40A7EB2B2720A614EAF1846CA960D135FAF30FAA", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + } + ], + "gas_wanted": "56145", + "gas_used": "43169", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "gov/MsgDeposit", + "value": { + "proposal_id": "1", + "depositor": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c", + "amount": [ + { + "denom": "uluna", + "amount": "1" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "ukrw", + "amount": "0" + } + ], + "gas": "56145" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "An/QGB4F5r/sCIEbVaYO1SuY/NHfWdyW5fhQmKNAEgGA" + }, + "signature": "LpaIBhSjEMFRuWFKljqSQoQHAzMjhBEKmdiUWVJvxtlCreFWOgPV+94BLrH3g19b0BzNqwph+35BEYv9nHg9Yw==" + } + ], + "memo": "Syncnode's iOS Wallet 🙀" + } + }, + "timestamp": "2019-12-27T15:58:38Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + }, + { + "height": "339178", + "txhash": "6CB25CADBEE2EC4FE74CFD5B9309453ACD5B611762D9E1EBBA99A4E2582BC4C1", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "19999990uluna" + }, + { + "key": "proposal_id", + "value": "2" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "19999990uluna" + } + ] + } + ] + } + ], + "gas_wanted": "144466", + "gas_used": "95751", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "gov/MsgDeposit", + "value": { + "proposal_id": "2", + "depositor": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l", + "amount": [ + { + "denom": "uluna", + "amount": "19999990" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "ukrw", + "amount": "2167" + } + ], + "gas": "144466" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AgfYBjlvfQtwveh1VkpLc2Es0sw/KqkYo56g7EGGzQcB" + }, + "signature": "F0eKj1DHN7VAC8tCnjKxlvfjfNh2YBG4qBu7dRu69JYUqxc6YBuftwygvJEuhsLtCLtPYVDhwwddqt/4Y8t/XA==" + } + ], + "memo": "" + } + }, + "timestamp": "2020-01-08T08:39:52Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "19999990uluna" + }, + { + "key": "proposal_id", + "value": "2" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "19999990uluna" + } + ] + } + ] + }, + { + "height": "339415", + "txhash": "53FFB6A151AE377CABFBDEF2B91B9C362397B568283525B943342DCD0B4AFC67", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "30000000uluna" + }, + { + "key": "proposal_id", + "value": "2" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "30000000uluna" + } + ] + } + ] + } + ], + "gas_wanted": "146600", + "gas_used": "97371", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "gov/MsgDeposit", + "value": { + "proposal_id": "2", + "depositor": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l", + "amount": [ + { + "denom": "uluna", + "amount": "30000000" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "ukrw", + "amount": "2199" + } + ], + "gas": "146600" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AgfYBjlvfQtwveh1VkpLc2Es0sw/KqkYo56g7EGGzQcB" + }, + "signature": "y0TAbtNXpyjJnbQEjMyJ37g4/tK139J4zH/U2W5pUIdKKX8Uh3INiSK+rneicBRazr1QND3ph+CLlmHB2p3o1w==" + } + ], + "memo": "" + } + }, + "timestamp": "2020-01-08T09:05:49Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "30000000uluna" + }, + { + "key": "proposal_id", + "value": "2" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "30000000uluna" + } + ] + } + ] + }, + { + "height": "342897", + "txhash": "71AF6133CF0EBCCF8C835CD5DFE21B9BD6D16A7C01FFD3921AD0A17B8A31ED39", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1000000uluna" + }, + { + "key": "proposal_id", + "value": "2" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1000000uluna" + } + ] + } + ] + } + ], + "gas_wanted": "128191", + "gas_used": "98394", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "gov/MsgDeposit", + "value": { + "proposal_id": "2", + "depositor": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c", + "amount": [ + { + "denom": "uluna", + "amount": "1000000" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "ukrw", + "amount": "4000" + } + ], + "gas": "128191" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "An/QGB4F5r/sCIEbVaYO1SuY/NHfWdyW5fhQmKNAEgGA" + }, + "signature": "m1UnrxCvVUww1oJ27Uo9+1lwCma2K8hlf1Gi2LMXepJwHQ4uc6AWjJHLlxuEgaSCQ1lFqnl0FE003Zw6iMqW6w==" + } + ], + "memo": "Syncnode's iOS Wallet 🙀" + } + }, + "timestamp": "2020-01-08T15:27:50Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1000000uluna" + }, + { + "key": "proposal_id", + "value": "2" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1000000uluna" + } + ] + } + ] + }, + { + "height": "351020", + "txhash": "5A713083D785BE770CA01B5B8E7EAC263CBBD3B9975B9DC98F526CC9CD6C0064", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "2" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + } + ], + "gas_wanted": "128141", + "gas_used": "98190", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "gov/MsgDeposit", + "value": { + "proposal_id": "2", + "depositor": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c", + "amount": [ + { + "denom": "uluna", + "amount": "1" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "ukrw", + "amount": "4000" + } + ], + "gas": "128141" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "An/QGB4F5r/sCIEbVaYO1SuY/NHfWdyW5fhQmKNAEgGA" + }, + "signature": "OhP5rHxO8Vxtr1KUxLDnryscLC6dLj2ztZy6Mf0nGjwYZs3s2xL6AYZJe4hj/N04x2mKsM64O/UzzKTg754VXA==" + } + ], + "memo": "Syncnode's iOS Wallet 🙀" + } + }, + "timestamp": "2020-01-09T06:16:11Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "2" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + }, + { + "height": "373735", + "txhash": "F26968321EF51AD7BF33DE19D23E61B5DA12D6E49435EB338B91DEC83940AF86", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1tv2j73xnqxgcpmdfl7kvwj3tr05h0ytxw3fu0n" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1tv2j73xnqxgcpmdfl7kvwj3tr05h0ytxw3fu0n" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "461000000uluna" + }, + { + "key": "proposal_id", + "value": "2" + }, + { + "key": "voting_period_start", + "value": "2" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "461000000uluna" + } + ] + } + ] + } + ], + "gas_wanted": "214333", + "gas_used": "142799", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "gov/MsgDeposit", + "value": { + "proposal_id": "2", + "depositor": "terra1tv2j73xnqxgcpmdfl7kvwj3tr05h0ytxw3fu0n", + "amount": [ + { + "denom": "uluna", + "amount": "461000000" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "uluna", + "amount": "3215" + } + ], + "gas": "214333" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A7SCnpoYpfY10LoTwUHBweQ8Q0nRUQrPw/mawKSvhLsV" + }, + "signature": "S0H8omxZvr90nf75JeFGaq5wNZY//InbSYKqnQUGGPJjt2S9UJ4rzullwGL4TKBBLgJ1bJy3LUJygKDVV4zbyw==" + } + ], + "memo": "" + } + }, + "timestamp": "2020-01-10T23:46:08Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1tv2j73xnqxgcpmdfl7kvwj3tr05h0ytxw3fu0n" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1tv2j73xnqxgcpmdfl7kvwj3tr05h0ytxw3fu0n" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "461000000uluna" + }, + { + "key": "proposal_id", + "value": "2" + }, + { + "key": "voting_period_start", + "value": "2" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "461000000uluna" + } + ] + } + ] + }, + { + "height": "376674", + "txhash": "7B6F415475C54DAFF2EDEF9A94D04708B25C400CBA84337992BA733C27088B7B", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1nywja8qykzgcva579tyuarglyv9dc75y8cyw3f" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1nywja8qykzgcva579tyuarglyv9dc75y8cyw3f" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "13000000uluna" + }, + { + "key": "proposal_id", + "value": "3" + }, + { + "key": "voting_period_start", + "value": "3" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "13000000uluna" + } + ] + } + ] + } + ], + "gas_wanted": "169000", + "gas_used": "111985", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "gov/MsgDeposit", + "value": { + "proposal_id": "3", + "depositor": "terra1nywja8qykzgcva579tyuarglyv9dc75y8cyw3f", + "amount": [ + { + "denom": "uluna", + "amount": "13000000" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "uluna", + "amount": "2535" + } + ], + "gas": "169000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Al4E+xICUrTA/YTMCqGne8BFmpreF+Xh9YsLV8y19ejC" + }, + "signature": "AOLefuLSRtirCEUlMSs5K5mMelLHyKSTou0orSlfeNULW0cf7ImHeVYNz8SLuytQnMF6ZJFEJffNt28M+VOfgA==" + } + ], + "memo": "" + } + }, + "timestamp": "2020-01-11T05:08:30Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1nywja8qykzgcva579tyuarglyv9dc75y8cyw3f" + }, + { + "key": "module", + "value": "governance" + }, + { + "key": "sender", + "value": "terra1nywja8qykzgcva579tyuarglyv9dc75y8cyw3f" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "13000000uluna" + }, + { + "key": "proposal_id", + "value": "3" + }, + { + "key": "voting_period_start", + "value": "3" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "13000000uluna" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/core/gov/msgs/MsgDeposit.data.v2.json b/src/core/gov/msgs/MsgDeposit.data.v2.json new file mode 100644 index 000000000..3146071c3 --- /dev/null +++ b/src/core/gov/msgs/MsgDeposit.data.v2.json @@ -0,0 +1,2139 @@ +{ + "total_count": "14", + "count": "14", + "page_number": "1", + "page_total": "1", + "limit": "100", + "txs": [ + { + "height": "198", + "txhash": "D414722B1D51C087119C1CE5BBDAAA39BCB454FC9BD24F30897FC8361B6D3D10", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + } + ], + "gas_wanted": "55352", + "gas_used": "42559", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgDeposit", + "value": { + "proposal_id": "1", + "depositor": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c", + "amount": [ + { + "denom": "uluna", + "amount": "1" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "uluna", + "amount": "0" + } + ], + "gas": "55352" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "An/QGB4F5r/sCIEbVaYO1SuY/NHfWdyW5fhQmKNAEgGA" + }, + "signature": "/e2LkcUFNcSTfVk7Gn/4J4Q4C2RUt54/dE4+heWKzGp+gA6gEquOoGLIAMpvUdJxA4DjO9l710OSCgkkcAmtbg==" + } + ], + "memo": "Syncnode's iOS Wallet" + } + }, + "timestamp": "2019-12-13T17:19:41Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + }, + { + "height": "978", + "txhash": "24495D2E4B4193DEF45C5246C6D90CEE4519F09C9E7FD87720AF94E7ACAD0226", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + } + ], + "gas_wanted": "87200", + "gas_used": "57467", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgDeposit", + "value": { + "proposal_id": "1", + "depositor": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l", + "amount": [ + { + "denom": "uluna", + "amount": "1" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "ukrw", + "amount": "1308" + } + ], + "gas": "87200" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AgfYBjlvfQtwveh1VkpLc2Es0sw/KqkYo56g7EGGzQcB" + }, + "signature": "NqHAA4etbibV596KPKvu2ylaZaJHf0RuJtt/3I8WURUoBfKyPRartMgNCckO0MFciWVmM6k0BIqBjXTbXoyMVA==" + } + ], + "memo": "" + } + }, + "timestamp": "2019-12-13T18:47:54Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + }, + { + "height": "5059", + "txhash": "0D9A9E3316FE6A6ABE92B3EA8D85CF15F39DC7926AC3A3BD48DDD979A054E12F", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1yazda3hv6hk7y53m4nj5e9eqpnrmavcrktcs73" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1yazda3hv6hk7y53m4nj5e9eqpnrmavcrktcs73" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + } + ], + "gas_wanted": "87333", + "gas_used": "57539", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgDeposit", + "value": { + "proposal_id": "1", + "depositor": "terra1yazda3hv6hk7y53m4nj5e9eqpnrmavcrktcs73", + "amount": [ + { + "denom": "uluna", + "amount": "1" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "ukrw", + "amount": "1310" + } + ], + "gas": "87333" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A30Cq4pAsDWhdfezKg6RVEXiZpPvO085v4wNob/exla0" + }, + "signature": "lUF2RTWevtdigpgECox4UxlEzYNJv3oDeqZkGLNkSgdLVndDb27BY/5NAAAKbPFbv2fRQOpI+SA8HwEcrydKlQ==" + } + ], + "memo": "" + } + }, + "timestamp": "2019-12-14T02:16:33Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1yazda3hv6hk7y53m4nj5e9eqpnrmavcrktcs73" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1yazda3hv6hk7y53m4nj5e9eqpnrmavcrktcs73" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + }, + { + "height": "37513", + "txhash": "DB7FD7F02CA7C02D55A31C41110B944360F06A44E387DC7CAF2F0F5040B871E9", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + } + ], + "gas_wanted": "55519", + "gas_used": "42687", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgDeposit", + "value": { + "proposal_id": "1", + "depositor": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c", + "amount": [ + { + "denom": "uluna", + "amount": "1" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "ukrw", + "amount": "0" + } + ], + "gas": "55519" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "An/QGB4F5r/sCIEbVaYO1SuY/NHfWdyW5fhQmKNAEgGA" + }, + "signature": "AP2T9vM+hXlS9Y6+vmYrgDP0L2qx5O7cvCHsTER8HdIRuB4MujjWFNARVoL9Qvwg7R1PLVVooQN1ZayEfm+DPw==" + } + ], + "memo": "Syncnode's iOS Wallet" + } + }, + "timestamp": "2019-12-16T13:44:08Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + }, + { + "height": "85239", + "txhash": "A686D04C61C44B7C7DF6E0D828FA6B3944A348AD0CC1C0A88FB5CD4E4B09F0E9", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1wttj8sugczlusz3c7sg028e2h64dqfve6hpzgf" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1wttj8sugczlusz3c7sg028e2h64dqfve6hpzgf" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + } + ], + "gas_wanted": "73191", + "gas_used": "56281", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgDeposit", + "value": { + "proposal_id": "1", + "depositor": "terra1wttj8sugczlusz3c7sg028e2h64dqfve6hpzgf", + "amount": [ + { + "denom": "uluna", + "amount": "1" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "ukrw", + "amount": "3000" + } + ], + "gas": "73191" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AuVBUPgKvSkVxNlfBjhY7BBClasvsWDHKbR37DWwLmbq" + }, + "signature": "LTaP7nVVWQbU9QbmKoNMfC9s7css4WAyia+Rs5k+1f8CwIP7s9dEx4ubXjkvtCt0TofM9n/xtsxcjXOL9fDtNQ==" + } + ], + "memo": "Syncnode's iOS Wallet" + } + }, + "timestamp": "2019-12-20T03:48:00Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1wttj8sugczlusz3c7sg028e2h64dqfve6hpzgf" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1wttj8sugczlusz3c7sg028e2h64dqfve6hpzgf" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + }, + { + "height": "124684", + "txhash": "71613C04A7490A7AD3D1F049698C420BCE409D7BDA76CA1C8ADE048A4EB5D184", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1vxawyk2ewxysxldu0x3p8xw7974p97uvftqccv" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1vxawyk2ewxysxldu0x3p8xw7974p97uvftqccv" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1000000uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1000000uluna" + } + ] + } + ] + } + ], + "gas_wanted": "82000", + "gas_used": "53985", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgDeposit", + "value": { + "proposal_id": "1", + "depositor": "terra1vxawyk2ewxysxldu0x3p8xw7974p97uvftqccv", + "amount": [ + { + "denom": "uluna", + "amount": "1000000" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "uluna", + "amount": "1230" + } + ], + "gas": "82000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Am3lehYh9tY92eS5lg98gBkfSwO0GUxQgXGE3KBcm+DT" + }, + "signature": "4l8x0ia9VpbmkQUEMR+5oa14wZxeZdT274OURnzmoeMw+EpADnGeDmrghUk02JBasbsGRaeUI8vZUn54tSSXcQ==" + } + ], + "memo": "" + } + }, + "timestamp": "2019-12-23T03:06:55Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1vxawyk2ewxysxldu0x3p8xw7974p97uvftqccv" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1vxawyk2ewxysxldu0x3p8xw7974p97uvftqccv" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1000000uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1000000uluna" + } + ] + } + ] + }, + { + "height": "182324", + "txhash": "96E89A89465CDAFBA11612F7C8AB785CD17FB2AEA575ACB51A0B04F210388248", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + } + ], + "gas_wanted": "56145", + "gas_used": "43169", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgDeposit", + "value": { + "proposal_id": "1", + "depositor": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c", + "amount": [ + { + "denom": "uluna", + "amount": "1" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "ukrw", + "amount": "0" + } + ], + "gas": "56145" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "An/QGB4F5r/sCIEbVaYO1SuY/NHfWdyW5fhQmKNAEgGA" + }, + "signature": "vLRfeMP6ybgkEqYNp6mik9ol96I5wxTIyjVftHcFkYBXu2iCHyC/BPTFkbIkPSaR3+2roTardxEw5xoxPPe0Xw==" + } + ], + "memo": "Syncnode's iOS Wallet 🙀" + } + }, + "timestamp": "2019-12-27T11:39:32Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + }, + { + "height": "184711", + "txhash": "8FBD62798D8EBE0F8D30AC0F40A7EB2B2720A614EAF1846CA960D135FAF30FAA", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + } + ], + "gas_wanted": "56145", + "gas_used": "43169", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgDeposit", + "value": { + "proposal_id": "1", + "depositor": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c", + "amount": [ + { + "denom": "uluna", + "amount": "1" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "ukrw", + "amount": "0" + } + ], + "gas": "56145" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "An/QGB4F5r/sCIEbVaYO1SuY/NHfWdyW5fhQmKNAEgGA" + }, + "signature": "LpaIBhSjEMFRuWFKljqSQoQHAzMjhBEKmdiUWVJvxtlCreFWOgPV+94BLrH3g19b0BzNqwph+35BEYv9nHg9Yw==" + } + ], + "memo": "Syncnode's iOS Wallet 🙀" + } + }, + "timestamp": "2019-12-27T15:58:38Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "1" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + }, + { + "height": "339178", + "txhash": "6CB25CADBEE2EC4FE74CFD5B9309453ACD5B611762D9E1EBBA99A4E2582BC4C1", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "19999990uluna" + }, + { + "key": "proposal_id", + "value": "2" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "19999990uluna" + } + ] + } + ] + } + ], + "gas_wanted": "144466", + "gas_used": "95751", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgDeposit", + "value": { + "proposal_id": "2", + "depositor": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l", + "amount": [ + { + "denom": "uluna", + "amount": "19999990" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "ukrw", + "amount": "2167" + } + ], + "gas": "144466" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AgfYBjlvfQtwveh1VkpLc2Es0sw/KqkYo56g7EGGzQcB" + }, + "signature": "F0eKj1DHN7VAC8tCnjKxlvfjfNh2YBG4qBu7dRu69JYUqxc6YBuftwygvJEuhsLtCLtPYVDhwwddqt/4Y8t/XA==" + } + ], + "memo": "" + } + }, + "timestamp": "2020-01-08T08:39:52Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "19999990uluna" + }, + { + "key": "proposal_id", + "value": "2" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "19999990uluna" + } + ] + } + ] + }, + { + "height": "339415", + "txhash": "53FFB6A151AE377CABFBDEF2B91B9C362397B568283525B943342DCD0B4AFC67", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "30000000uluna" + }, + { + "key": "proposal_id", + "value": "2" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "30000000uluna" + } + ] + } + ] + } + ], + "gas_wanted": "146600", + "gas_used": "97371", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgDeposit", + "value": { + "proposal_id": "2", + "depositor": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l", + "amount": [ + { + "denom": "uluna", + "amount": "30000000" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "ukrw", + "amount": "2199" + } + ], + "gas": "146600" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AgfYBjlvfQtwveh1VkpLc2Es0sw/KqkYo56g7EGGzQcB" + }, + "signature": "y0TAbtNXpyjJnbQEjMyJ37g4/tK139J4zH/U2W5pUIdKKX8Uh3INiSK+rneicBRazr1QND3ph+CLlmHB2p3o1w==" + } + ], + "memo": "" + } + }, + "timestamp": "2020-01-08T09:05:49Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "30000000uluna" + }, + { + "key": "proposal_id", + "value": "2" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "30000000uluna" + } + ] + } + ] + }, + { + "height": "342897", + "txhash": "71AF6133CF0EBCCF8C835CD5DFE21B9BD6D16A7C01FFD3921AD0A17B8A31ED39", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1000000uluna" + }, + { + "key": "proposal_id", + "value": "2" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1000000uluna" + } + ] + } + ] + } + ], + "gas_wanted": "128191", + "gas_used": "98394", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgDeposit", + "value": { + "proposal_id": "2", + "depositor": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c", + "amount": [ + { + "denom": "uluna", + "amount": "1000000" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "ukrw", + "amount": "4000" + } + ], + "gas": "128191" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "An/QGB4F5r/sCIEbVaYO1SuY/NHfWdyW5fhQmKNAEgGA" + }, + "signature": "m1UnrxCvVUww1oJ27Uo9+1lwCma2K8hlf1Gi2LMXepJwHQ4uc6AWjJHLlxuEgaSCQ1lFqnl0FE003Zw6iMqW6w==" + } + ], + "memo": "Syncnode's iOS Wallet 🙀" + } + }, + "timestamp": "2020-01-08T15:27:50Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1000000uluna" + }, + { + "key": "proposal_id", + "value": "2" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1000000uluna" + } + ] + } + ] + }, + { + "height": "351020", + "txhash": "5A713083D785BE770CA01B5B8E7EAC263CBBD3B9975B9DC98F526CC9CD6C0064", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "2" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + } + ], + "gas_wanted": "128141", + "gas_used": "98190", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgDeposit", + "value": { + "proposal_id": "2", + "depositor": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c", + "amount": [ + { + "denom": "uluna", + "amount": "1" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "ukrw", + "amount": "4000" + } + ], + "gas": "128141" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "An/QGB4F5r/sCIEbVaYO1SuY/NHfWdyW5fhQmKNAEgGA" + }, + "signature": "OhP5rHxO8Vxtr1KUxLDnryscLC6dLj2ztZy6Mf0nGjwYZs3s2xL6AYZJe4hj/N04x2mKsM64O/UzzKTg754VXA==" + } + ], + "memo": "Syncnode's iOS Wallet 🙀" + } + }, + "timestamp": "2020-01-09T06:16:11Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1jyjg55hzsh0f4xymy0kuuan30pp4q75ru0h35c" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "1uluna" + }, + { + "key": "proposal_id", + "value": "2" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "1uluna" + } + ] + } + ] + }, + { + "height": "373735", + "txhash": "F26968321EF51AD7BF33DE19D23E61B5DA12D6E49435EB338B91DEC83940AF86", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1tv2j73xnqxgcpmdfl7kvwj3tr05h0ytxw3fu0n" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1tv2j73xnqxgcpmdfl7kvwj3tr05h0ytxw3fu0n" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "461000000uluna" + }, + { + "key": "proposal_id", + "value": "2" + }, + { + "key": "voting_period_start", + "value": "2" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "461000000uluna" + } + ] + } + ] + } + ], + "gas_wanted": "214333", + "gas_used": "142799", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgDeposit", + "value": { + "proposal_id": "2", + "depositor": "terra1tv2j73xnqxgcpmdfl7kvwj3tr05h0ytxw3fu0n", + "amount": [ + { + "denom": "uluna", + "amount": "461000000" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "uluna", + "amount": "3215" + } + ], + "gas": "214333" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A7SCnpoYpfY10LoTwUHBweQ8Q0nRUQrPw/mawKSvhLsV" + }, + "signature": "S0H8omxZvr90nf75JeFGaq5wNZY//InbSYKqnQUGGPJjt2S9UJ4rzullwGL4TKBBLgJ1bJy3LUJygKDVV4zbyw==" + } + ], + "memo": "" + } + }, + "timestamp": "2020-01-10T23:46:08Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1tv2j73xnqxgcpmdfl7kvwj3tr05h0ytxw3fu0n" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1tv2j73xnqxgcpmdfl7kvwj3tr05h0ytxw3fu0n" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "461000000uluna" + }, + { + "key": "proposal_id", + "value": "2" + }, + { + "key": "voting_period_start", + "value": "2" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "461000000uluna" + } + ] + } + ] + }, + { + "height": "376674", + "txhash": "7B6F415475C54DAFF2EDEF9A94D04708B25C400CBA84337992BA733C27088B7B", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1nywja8qykzgcva579tyuarglyv9dc75y8cyw3f" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1nywja8qykzgcva579tyuarglyv9dc75y8cyw3f" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "13000000uluna" + }, + { + "key": "proposal_id", + "value": "3" + }, + { + "key": "voting_period_start", + "value": "3" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "13000000uluna" + } + ] + } + ] + } + ], + "gas_wanted": "169000", + "gas_used": "111985", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [ + { + "type": "cosmos-sdk/MsgDeposit", + "value": { + "proposal_id": "3", + "depositor": "terra1nywja8qykzgcva579tyuarglyv9dc75y8cyw3f", + "amount": [ + { + "denom": "uluna", + "amount": "13000000" + } + ] + } + } + ], + "fee": { + "amount": [ + { + "denom": "uluna", + "amount": "2535" + } + ], + "gas": "169000" + }, + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Al4E+xICUrTA/YTMCqGne8BFmpreF+Xh9YsLV8y19ejC" + }, + "signature": "AOLefuLSRtirCEUlMSs5K5mMelLHyKSTou0orSlfeNULW0cf7ImHeVYNz8SLuytQnMF6ZJFEJffNt28M+VOfgA==" + } + ], + "memo": "" + } + }, + "timestamp": "2020-01-11T05:08:30Z", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1nywja8qykzgcva579tyuarglyv9dc75y8cyw3f" + }, + { + "key": "module", + "value": "cosmos-sdkernance" + }, + { + "key": "sender", + "value": "terra1nywja8qykzgcva579tyuarglyv9dc75y8cyw3f" + }, + { + "key": "action", + "value": "deposit" + } + ] + }, + { + "type": "proposal_deposit", + "attributes": [ + { + "key": "amount", + "value": "13000000uluna" + }, + { + "key": "proposal_id", + "value": "3" + }, + { + "key": "voting_period_start", + "value": "3" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, + { + "key": "amount", + "value": "13000000uluna" + } + ] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/core/gov/msgs/MsgDeposit.spec.ts b/src/core/gov/msgs/MsgDeposit.spec.ts index 8bff3b22d..5cc5c90be 100644 --- a/src/core/gov/msgs/MsgDeposit.spec.ts +++ b/src/core/gov/msgs/MsgDeposit.spec.ts @@ -1,13 +1,25 @@ import { MsgDeposit } from './MsgDeposit'; const MsgDepositAmino = require('./MsgDeposit.data.json'); +const MsgDepositAminoV2 = require('./MsgDeposit.data.v2.json'); describe('MsgDeposit', () => { - it('deserializes', () => { + it('legacy: deserializes', () => { MsgDepositAmino.txs.forEach((txinfo: any) => { txinfo.tx.value.msg.forEach((msg: any) => { if (msg.type == 'gov/MsgDeposit') { - const e = MsgDeposit.fromAmino(msg); - expect(e.toAmino()).toEqual(msg); + const e = MsgDeposit.fromAmino(msg, true); + expect(e.toAmino(true)).toEqual(msg); + } + }); + }); + }); + + it('deserializes', () => { + MsgDepositAminoV2.txs.forEach((txinfo: any) => { + txinfo.tx.value.msg.forEach((msg: any) => { + if (msg.type == 'cosmos-sdk/MsgDeposit') { + const e = MsgDeposit.fromAmino(msg, false); + expect(e.toAmino(false)).toEqual(msg); } }); }); diff --git a/src/core/gov/msgs/MsgDeposit.ts b/src/core/gov/msgs/MsgDeposit.ts index 5218f6301..79b23c601 100644 --- a/src/core/gov/msgs/MsgDeposit.ts +++ b/src/core/gov/msgs/MsgDeposit.ts @@ -28,7 +28,8 @@ export class MsgDeposit extends JSONSerializable< this.amount = new Coins(amount); } - public static fromAmino(data: MsgDeposit.Amino): MsgDeposit { + public static fromAmino(data: MsgDeposit.Amino, _?: boolean): MsgDeposit { + _; const { value: { proposal_id, depositor, amount }, } = data; @@ -39,10 +40,10 @@ export class MsgDeposit extends JSONSerializable< ); } - public toAmino(): MsgDeposit.Amino { + public toAmino(isClassic?: boolean): MsgDeposit.Amino { const { proposal_id, depositor, amount } = this; return { - type: 'gov/MsgDeposit', + type: isClassic ? 'gov/MsgDeposit' : 'cosmos-sdk/MsgDeposit', value: { proposal_id: proposal_id.toString(), depositor, @@ -51,7 +52,8 @@ export class MsgDeposit extends JSONSerializable< }; } - public static fromData(data: MsgDeposit.Data): MsgDeposit { + public static fromData(data: MsgDeposit.Data, _?: boolean): MsgDeposit { + _; const { proposal_id, depositor, amount } = data; return new MsgDeposit( Number.parseInt(proposal_id), @@ -60,7 +62,8 @@ export class MsgDeposit extends JSONSerializable< ); } - public toData(): MsgDeposit.Data { + public toData(_?: boolean): MsgDeposit.Data { + _; const { proposal_id, depositor, amount } = this; return { '@type': '/cosmos.gov.v1beta1.MsgDeposit', @@ -70,7 +73,8 @@ export class MsgDeposit extends JSONSerializable< }; } - public static fromProto(proto: MsgDeposit.Proto): MsgDeposit { + public static fromProto(proto: MsgDeposit.Proto, _?: boolean): MsgDeposit { + _; return new MsgDeposit( proto.proposalId.toNumber(), proto.depositor, @@ -78,7 +82,8 @@ export class MsgDeposit extends JSONSerializable< ); } - public toProto(): MsgDeposit.Proto { + public toProto(_?: boolean): MsgDeposit.Proto { + _; const { proposal_id, depositor, amount } = this; return MsgDeposit_pb.fromPartial({ amount: amount.toProto(), @@ -87,21 +92,21 @@ export class MsgDeposit extends JSONSerializable< }); } - public packAny(): Any { + public packAny(isClassic?: boolean): Any { return Any.fromPartial({ typeUrl: '/cosmos.gov.v1beta1.MsgDeposit', - value: MsgDeposit_pb.encode(this.toProto()).finish(), + value: MsgDeposit_pb.encode(this.toProto(isClassic)).finish(), }); } - public static unpackAny(msgAny: Any): MsgDeposit { - return MsgDeposit.fromProto(MsgDeposit_pb.decode(msgAny.value)); + public static unpackAny(msgAny: Any, isClassic?: boolean): MsgDeposit { + return MsgDeposit.fromProto(MsgDeposit_pb.decode(msgAny.value), isClassic); } } export namespace MsgDeposit { export interface Amino { - type: 'gov/MsgDeposit'; + type: 'gov/MsgDeposit' | 'cosmos-sdk/MsgDeposit'; value: { proposal_id: string; depositor: AccAddress; diff --git a/src/core/gov/msgs/MsgSubmitProposal.data.v2.json b/src/core/gov/msgs/MsgSubmitProposal.data.v2.json new file mode 100644 index 000000000..3c3e48ddd --- /dev/null +++ b/src/core/gov/msgs/MsgSubmitProposal.data.v2.json @@ -0,0 +1,20678 @@ +{ + "total_count": "35", + "count": "35", + "page_number": "1", + "page_total": "1", + "limit": "40", + "txs": [{ + "height": "13552", + "txhash": "29BFC59B7B5E5E2E6DD453D3962C216CF508B61EC664E1ECD59A66CBA5913A55", + "data": "0101", + "raw_log": "[{\"msg_index\":0,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"512000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"1\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"1\"},{\"key\":\"voting_period_start\",\"value\":\"1\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"512000000uluna\"}]}]}]", + "logs": [{ + "msg_index": 0, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "512000000uluna" + }, { + "key": "proposal_id", + "value": "1" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "1" + }, { + "key": "voting_period_start", + "value": "1" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "512000000uluna" + }] + }] + }], + "gas_wanted": "150000", + "gas_used": "126476", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [{ + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "params/ParameterChangeProposal", + "value": { + "title": "Shorten cosmos-sdk params", + "description": "Decrease cosmos-sdk deposit \u0026 voting period to a hour", + "changes": [{ + "subspace": "cosmos-sdk", + "key": "depositparams", + "value": "{\"max_deposit_period\":\"3600000000000\", \"min_deposit\": [{\"denom\": \"uluna\", \"amount\": \"10000000\"}]}" + }, { + "subspace": "cosmos-sdk", + "key": "votingparams", + "value": "{\"voting_period\":\"3600000000000\"}" + }] + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "512000000" + }], + "proposer": "terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv" + } + }], + "fee": { + "amount": [{ + "denom": "uluna", + "amount": "2250" + }], + "gas": "150000" + }, + "signatures": [{ + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Ar+guke5UuM2XEZ9/ouPhAQbYs+f7y6jQCtGlI2lj1ZH" + }, + "signature": "BzJcN5kmO6iu3U8Saf4WCrIx30TclEc2kav9x6hifj11ABBhNflFXuLxQb6C5ITfFyDZRZLF7sz/7TEpClD1mg==" + }], + "memo": "" + } + }, + "timestamp": "2019-12-10T03:30:11Z", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "512000000uluna" + }, { + "key": "proposal_id", + "value": "1" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "1" + }, { + "key": "voting_period_start", + "value": "1" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "512000000uluna" + }] + }] + }, { + "height": "16712", + "txhash": "B69CD013EF8CA2ADCE29D9BA619E947732F254BAD666B67686AE64FFE0B58039", + "data": "0102", + "raw_log": "[{\"msg_index\":0,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1w7auhmup9rh77g3j7fjluhfxw20udn406lhc7p\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1w7auhmup9rh77g3j7fjluhfxw20udn406lhc7p\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\"},{\"key\":\"proposal_id\",\"value\":\"2\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"2\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\"}]}]}]", + "logs": [{ + "msg_index": 0, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1w7auhmup9rh77g3j7fjluhfxw20udn406lhc7p" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1w7auhmup9rh77g3j7fjluhfxw20udn406lhc7p" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount" + }, { + "key": "proposal_id", + "value": "2" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "2" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount" + }] + }] + }], + "gas_wanted": "98200", + "gas_used": "65294", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [{ + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "test", + "description": "test" + } + }, + "initial_deposit": [], + "proposer": "terra1w7auhmup9rh77g3j7fjluhfxw20udn406lhc7p" + } + }], + "fee": { + "amount": [{ + "denom": "ukrw", + "amount": "1473" + }], + "gas": "98200" + }, + "signatures": [{ + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Aj6piYTWNrv+aT0PqbEelNUatIwlapVWYPtAnZFbGSCK" + }, + "signature": "1KXoMjMY0Ech4O0Yxp3LXYyvnk83Q7OA4yEDpviM3IhUjmZy1A8SRXkslxU/bY0pAKAYgt8jTxBG+SKieGu4vg==" + }], + "memo": "" + } + }, + "timestamp": "2019-12-10T08:11:13Z", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1w7auhmup9rh77g3j7fjluhfxw20udn406lhc7p" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1w7auhmup9rh77g3j7fjluhfxw20udn406lhc7p" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount" + }, { + "key": "proposal_id", + "value": "2" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "2" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount" + }] + }] + }, { + "height": "16825", + "txhash": "310941AF8E3D0AB475085957202B0D10B52C04903113ACD1A108D63D0466E178", + "data": "0103", + "raw_log": "[{\"msg_index\":0,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1w7auhmup9rh77g3j7fjluhfxw20udn406lhc7p\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1w7auhmup9rh77g3j7fjluhfxw20udn406lhc7p\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\"},{\"key\":\"proposal_id\",\"value\":\"3\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"3\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\"}]}]}]", + "logs": [{ + "msg_index": 0, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1w7auhmup9rh77g3j7fjluhfxw20udn406lhc7p" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1w7auhmup9rh77g3j7fjluhfxw20udn406lhc7p" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount" + }, { + "key": "proposal_id", + "value": "3" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "3" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount" + }] + }] + }], + "gas_wanted": "104533", + "gas_used": "69563", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [{ + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "proposal", + "description": "proposal" + } + }, + "initial_deposit": [], + "proposer": "terra1w7auhmup9rh77g3j7fjluhfxw20udn406lhc7p" + } + }], + "fee": { + "amount": [{ + "denom": "uluna", + "amount": "1568" + }], + "gas": "104533" + }, + "signatures": [{ + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Aj6piYTWNrv+aT0PqbEelNUatIwlapVWYPtAnZFbGSCK" + }, + "signature": "AuKs1STJnnifbmCcWF5T9pQn84i0ux9UJl9RmUiWGPMRDyOd50gIvjpEjVr6mfJSBY42bzNpzdOuw5rUDrKJ8A==" + }], + "memo": "" + } + }, + "timestamp": "2019-12-10T08:21:16Z", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1w7auhmup9rh77g3j7fjluhfxw20udn406lhc7p" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1w7auhmup9rh77g3j7fjluhfxw20udn406lhc7p" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount" + }, { + "key": "proposal_id", + "value": "3" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "3" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount" + }] + }] + }, { + "height": "18293", + "txhash": "0B447F90A122C95E263D7338F5A45BFA4BAF27E1327CEE3AB00777CC82422AC9", + "data": "0104", + "raw_log": "[{\"msg_index\":0,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\"},{\"key\":\"proposal_id\",\"value\":\"4\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"4\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\"}]}]}]", + "logs": [{ + "msg_index": 0, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount" + }, { + "key": "proposal_id", + "value": "4" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "4" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount" + }] + }] + }], + "gas_wanted": "111333", + "gas_used": "74225", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [{ + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "title", + "description": "description" + } + }, + "initial_deposit": [], + "proposer": "terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv" + } + }], + "fee": { + "amount": [{ + "denom": "uluna", + "amount": "1670" + }], + "gas": "111333" + }, + "signatures": [{ + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Ar+guke5UuM2XEZ9/ouPhAQbYs+f7y6jQCtGlI2lj1ZH" + }, + "signature": "6Y8iAX3i3vLv70lmqoUpc8K/muaGLsPLhSvsunaRVtxGK/4DsjfC/3+qxFuPpGtjBLXjui8TdVnZZu2b7GMmMw==" + }], + "memo": "" + } + }, + "timestamp": "2019-12-10T10:31:41Z", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount" + }, { + "key": "proposal_id", + "value": "4" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "4" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount" + }] + }] + }, { + "height": "47103", + "txhash": "FDE495F60D2F4502D483345E8716C995811A4BAD56C1F2EB4B7F8E0211A7F8D2", + "data": "0105", + "raw_log": "[{\"msg_index\":0,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\"},{\"key\":\"proposal_id\",\"value\":\"5\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"5\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\"}]}]}]", + "logs": [{ + "msg_index": 0, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount" + }, { + "key": "proposal_id", + "value": "5" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "5" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount" + }] + }] + }], + "gas_wanted": "106266", + "gas_used": "70257", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [{ + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "test", + "description": "test" + } + }, + "initial_deposit": [], + "proposer": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + } + }], + "fee": { + "amount": [{ + "denom": "uluna", + "amount": "1594" + }], + "gas": "106266" + }, + "signatures": [{ + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A5CDIb12doIQR5vbiqPsVOcexPO+fOPR5E7ioVcv7+mf" + }, + "signature": "ctWxH5K1ioogdXP8lvDGUJt+qX5300+1pWVqyReCcMtXmof++W6I0DWmAgkDXCT5eyyCdDlZA7SIHIJlQ0J+cw==" + }], + "memo": "" + } + }, + "timestamp": "2019-12-12T05:11:31Z", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount" + }, { + "key": "proposal_id", + "value": "5" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "5" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount" + }] + }] + }, { + "height": "47133", + "txhash": "41542F1B9AD695D6B23C7F9C391F12471A4FB5DD45B05922027088F859005052", + "data": "0106", + "raw_log": "[{\"msg_index\":0,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"512000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"6\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"6\"},{\"key\":\"voting_period_start\",\"value\":\"6\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"512000000uluna\"}]}]}]", + "logs": [{ + "msg_index": 0, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "512000000uluna" + }, { + "key": "proposal_id", + "value": "6" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "6" + }, { + "key": "voting_period_start", + "value": "6" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "512000000uluna" + }] + }] + }], + "gas_wanted": "150000", + "gas_used": "102603", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [{ + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "params/ParameterChangeProposal", + "value": { + "title": "Shorten staking params", + "description": "Decrease staking unbond time period to 5 minutes", + "changes": [{ + "subspace": "staking", + "key": "UnbondingTime", + "value": "\"300000000000\"" + }] + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "512000000" + }], + "proposer": "terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv" + } + }], + "fee": { + "amount": [{ + "denom": "uluna", + "amount": "2250" + }], + "gas": "150000" + }, + "signatures": [{ + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Ar+guke5UuM2XEZ9/ouPhAQbYs+f7y6jQCtGlI2lj1ZH" + }, + "signature": "cJ5G5l4ZPefZRER3qb4ECdelsh5A560hbbQ3MthJGQBhMi/kboCs0RXifKoXVeGasMMFKobPKa++3LNWzIpngg==" + }], + "memo": "" + } + }, + "timestamp": "2019-12-12T05:14:11Z", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "512000000uluna" + }, { + "key": "proposal_id", + "value": "6" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "6" + }, { + "key": "voting_period_start", + "value": "6" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "512000000uluna" + }] + }] + }, { + "height": "48654", + "txhash": "FC6236FEC475700DA3DD70BBBA3B50E5B4F170D726DE48B59BE526F03D97C3F1", + "data": "0107", + "raw_log": "[{\"msg_index\":0,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1ncjcu6ja6pmrexj35up2483cynzxn38y3jdfg7\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1ncjcu6ja6pmrexj35up2483cynzxn38y3jdfg7\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\"},{\"key\":\"proposal_id\",\"value\":\"7\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"7\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\"}]}]}]", + "logs": [{ + "msg_index": 0, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1ncjcu6ja6pmrexj35up2483cynzxn38y3jdfg7" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1ncjcu6ja6pmrexj35up2483cynzxn38y3jdfg7" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount" + }, { + "key": "proposal_id", + "value": "7" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "7" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount" + }] + }] + }], + "gas_wanted": "91600", + "gas_used": "61031", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [{ + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "x", + "description": "x" + } + }, + "initial_deposit": [], + "proposer": "terra1ncjcu6ja6pmrexj35up2483cynzxn38y3jdfg7" + } + }], + "fee": { + "amount": [{ + "denom": "umnt", + "amount": "1374" + }], + "gas": "91600" + }, + "signatures": [{ + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AjXZj1rThm8xRgGyopzzn4WIpQc3fVnrGnJWaUGBhEux" + }, + "signature": "iedlFsJtbDQCB/3mMdBQSijLTE9hc6rlsMy0i47dUaBmOHoCY1SVCs+9C16MWll9iQ21jEIpm4rNm65s8VRU9Q==" + }], + "memo": "" + } + }, + "timestamp": "2019-12-12T07:29:22Z", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1ncjcu6ja6pmrexj35up2483cynzxn38y3jdfg7" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1ncjcu6ja6pmrexj35up2483cynzxn38y3jdfg7" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount" + }, { + "key": "proposal_id", + "value": "7" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "7" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount" + }] + }] + }, { + "height": "48866", + "txhash": "863F8BDCD225EDDAD9ED219F0CD7FD25FE42DA605F31D4569BFCAF415230D2AC", + "data": "0108", + "raw_log": "[{\"msg_index\":0,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\"},{\"key\":\"proposal_id\",\"value\":\"8\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"8\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\"}]}]}]", + "logs": [{ + "msg_index": 0, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount" + }, { + "key": "proposal_id", + "value": "8" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "8" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount" + }] + }] + }], + "gas_wanted": "106200", + "gas_used": "70768", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [{ + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "don't deposit", + "description": "cc" + } + }, + "initial_deposit": [], + "proposer": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + } + }], + "fee": { + "amount": [{ + "denom": "uluna", + "amount": "1593" + }], + "gas": "106200" + }, + "signatures": [{ + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A5CDIb12doIQR5vbiqPsVOcexPO+fOPR5E7ioVcv7+mf" + }, + "signature": "FrRthLNlFOzKkQXHpLfoFkrhfPfhDY4ZO6rEJNs9OW5/vdnqsUDyNcfLax/RwHj3d/Z3hYdjulohFvU7azwPoQ==" + }], + "memo": "" + } + }, + "timestamp": "2019-12-12T07:48:12Z", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount" + }, { + "key": "proposal_id", + "value": "8" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "8" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount" + }] + }] + }, { + "height": "49202", + "txhash": "3C264ADF9C7A38907F8EB37076B5B4E9DD5597DB99DA1EACD1B1FE18D5732D6F", + "data": "0109", + "raw_log": "[{\"msg_index\":0,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"512000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"9\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"9\"},{\"key\":\"voting_period_start\",\"value\":\"9\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"512000000uluna\"}]}]}]", + "logs": [{ + "msg_index": 0, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "512000000uluna" + }, { + "key": "proposal_id", + "value": "9" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "9" + }, { + "key": "voting_period_start", + "value": "9" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "512000000uluna" + }] + }] + }], + "gas_wanted": "171066", + "gas_used": "113322", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [{ + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "distribution/CommunityPoolSpendProposal", + "value": { + "title": "community pool spend", + "description": "pool", + "recipient": "terra1yqf95vnygg9hytfff8reerr8z6gnjn654c98zz", + "amount": [{ + "denom": "uluna", + "amount": "1" + }] + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "512000000" + }], + "proposer": "terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv" + } + }], + "fee": { + "amount": [{ + "denom": "uluna", + "amount": "2566" + }], + "gas": "171066" + }, + "signatures": [{ + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Ar+guke5UuM2XEZ9/ouPhAQbYs+f7y6jQCtGlI2lj1ZH" + }, + "signature": "N4AA3wRabTcNZ26dkTp54oUvZaG0VNze1pQrZceKqS9eqp2JPITC4i9pVw6Jo5A5bJHCEC7c4GoHUibO/hAMPg==" + }], + "memo": "" + } + }, + "timestamp": "2019-12-12T08:18:04Z", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1wg2mlrxdmnnkkykgqg4znky86nyrtc45q336yv" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "512000000uluna" + }, { + "key": "proposal_id", + "value": "9" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "9" + }, { + "key": "voting_period_start", + "value": "9" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "512000000uluna" + }] + }] + }, { + "height": "50009", + "txhash": "2843A99786F1B3430E6697DFF6DC910226FB6A0233B9BB794FB1FC80D55072AC", + "data": "010D", + "raw_log": "[{\"msg_index\":0,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra183ccdkpy0vwj6r43as0r308ylcq5vmjjaf7333\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra183ccdkpy0vwj6r43as0r308ylcq5vmjjaf7333\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\"},{\"key\":\"proposal_id\",\"value\":\"13\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"13\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\"}]}]}]", + "logs": [{ + "msg_index": 0, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra183ccdkpy0vwj6r43as0r308ylcq5vmjjaf7333" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra183ccdkpy0vwj6r43as0r308ylcq5vmjjaf7333" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount" + }, { + "key": "proposal_id", + "value": "13" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "13" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount" + }] + }] + }], + "gas_wanted": "93400", + "gas_used": "62362", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [{ + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "new proposal", + "description": "new" + } + }, + "initial_deposit": [], + "proposer": "terra183ccdkpy0vwj6r43as0r308ylcq5vmjjaf7333" + } + }], + "fee": { + "amount": [{ + "denom": "uluna", + "amount": "1401" + }], + "gas": "93400" + }, + "signatures": [{ + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A53YaXjIo9EumKyRWhwmFIBJvUNCqqpuxjLuB3RUOutb" + }, + "signature": "Mf4mHOgW2hNq+Ce1ynUwRBDvPfyYRTma4lS9hU7i585EH+6iHJ2oPe7GLGAJmPSwKXH14XkLeP6sXpJMSTROPA==" + }], + "memo": "" + } + }, + "timestamp": "2019-12-12T09:29:44Z", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra183ccdkpy0vwj6r43as0r308ylcq5vmjjaf7333" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra183ccdkpy0vwj6r43as0r308ylcq5vmjjaf7333" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount" + }, { + "key": "proposal_id", + "value": "13" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "13" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount" + }] + }] + }, { + "height": "50624", + "txhash": "47A787ADC26556874921A206ECFD39DDD05DB8A27846728951604730ADD564DC", + "data": "010E", + "raw_log": "[{\"msg_index\":0,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra183ccdkpy0vwj6r43as0r308ylcq5vmjjaf7333\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra183ccdkpy0vwj6r43as0r308ylcq5vmjjaf7333\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"10000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"14\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"14\"},{\"key\":\"voting_period_start\",\"value\":\"14\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"10000000uluna\"}]}]}]", + "logs": [{ + "msg_index": 0, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra183ccdkpy0vwj6r43as0r308ylcq5vmjjaf7333" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra183ccdkpy0vwj6r43as0r308ylcq5vmjjaf7333" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "10000000uluna" + }, { + "key": "proposal_id", + "value": "14" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "14" + }, { + "key": "voting_period_start", + "value": "14" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "10000000uluna" + }] + }] + }], + "gas_wanted": "107866", + "gas_used": "71749", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [{ + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "d", + "description": "d" + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "10000000" + }], + "proposer": "terra183ccdkpy0vwj6r43as0r308ylcq5vmjjaf7333" + } + }], + "fee": { + "amount": [{ + "denom": "uluna", + "amount": "1618" + }], + "gas": "107866" + }, + "signatures": [{ + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A53YaXjIo9EumKyRWhwmFIBJvUNCqqpuxjLuB3RUOutb" + }, + "signature": "OwLRSnhfR5BrqDimW6z988QtNFPi40rBfjiWM9ouVkxjwYDdTpXfi3AY2r3WOryByhgiVwriB2atx1GaNj2lCg==" + }], + "memo": "" + } + }, + "timestamp": "2019-12-12T10:24:25Z", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra183ccdkpy0vwj6r43as0r308ylcq5vmjjaf7333" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra183ccdkpy0vwj6r43as0r308ylcq5vmjjaf7333" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "10000000uluna" + }, { + "key": "proposal_id", + "value": "14" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "14" + }, { + "key": "voting_period_start", + "value": "14" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "10000000uluna" + }] + }] + }, { + "height": "67144", + "txhash": "70B12D7CAF5527D76CAF5276D6EDD398BE49207DAD2E8BD582C7E6C1DB8D86B1", + "data": "0112", + "raw_log": "[{\"msg_index\":0,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1pw8fzed6x4yjexdcaffu6t6ujj082vcljua2x0\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1pw8fzed6x4yjexdcaffu6t6ujj082vcljua2x0\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\"},{\"key\":\"proposal_id\",\"value\":\"18\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"18\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\"}]}]}]", + "logs": [{ + "msg_index": 0, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1pw8fzed6x4yjexdcaffu6t6ujj082vcljua2x0" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1pw8fzed6x4yjexdcaffu6t6ujj082vcljua2x0" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount" + }, { + "key": "proposal_id", + "value": "18" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "18" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount" + }] + }] + }], + "gas_wanted": "90066", + "gas_used": "60230", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [{ + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "2", + "description": "2" + } + }, + "initial_deposit": [], + "proposer": "terra1pw8fzed6x4yjexdcaffu6t6ujj082vcljua2x0" + } + }], + "fee": { + "amount": [{ + "denom": "uusd", + "amount": "1351" + }], + "gas": "90066" + }, + "signatures": [{ + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Ar0Wmrq7SkT7oME2vD0MLkQLhRh8conSd0KIsIKIEmef" + }, + "signature": "hbjMd7xRzHrp/4v6cOVmB0kTuwb/rrKK8bxdTnubEyMBILIzfISfnKxJF4MnAFQUyn0+hIDjwo4wNQLCFgpaFw==" + }], + "memo": "" + } + }, + "timestamp": "2019-12-13T10:50:30Z", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1pw8fzed6x4yjexdcaffu6t6ujj082vcljua2x0" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1pw8fzed6x4yjexdcaffu6t6ujj082vcljua2x0" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount" + }, { + "key": "proposal_id", + "value": "18" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "18" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount" + }] + }] + }, { + "height": "116570", + "txhash": "7924EFC6EEA45769D9C6A7407536DFE238E787FE13738A200F7FA7F6B8A53AA8", + "data": "0113", + "raw_log": "[{\"msg_index\":0,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1vxag648tpgkk2w603m040rc6562drj9ujkaq0j\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1vxag648tpgkk2w603m040rc6562drj9ujkaq0j\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"10000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"19\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"19\"},{\"key\":\"voting_period_start\",\"value\":\"19\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"10000000uluna\"}]}]}]", + "logs": [{ + "msg_index": 0, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1vxag648tpgkk2w603m040rc6562drj9ujkaq0j" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1vxag648tpgkk2w603m040rc6562drj9ujkaq0j" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "10000000uluna" + }, { + "key": "proposal_id", + "value": "19" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "19" + }, { + "key": "voting_period_start", + "value": "19" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "10000000uluna" + }] + }] + }], + "gas_wanted": "112400", + "gas_used": "75031", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [{ + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "3", + "description": "3" + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "10000000" + }], + "proposer": "terra1vxag648tpgkk2w603m040rc6562drj9ujkaq0j" + } + }], + "fee": { + "amount": [{ + "denom": "uluna", + "amount": "1686" + }], + "gas": "112400" + }, + "signatures": [{ + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AvT5qpEvpQ7ubenDYN1b3uT9rjbAwBgSLr5ejPVpXvJz" + }, + "signature": "Ju7l8ndSjgVqCMe+PKlS+w8xp2qws0xJgOnqrWa8W+wG/Xm652OKtAiWUTPivdL7yVPKMaIMKm4x64PQYI+u3g==" + }], + "memo": "" + } + }, + "timestamp": "2019-12-16T11:50:25Z", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1vxag648tpgkk2w603m040rc6562drj9ujkaq0j" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1vxag648tpgkk2w603m040rc6562drj9ujkaq0j" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "10000000uluna" + }, { + "key": "proposal_id", + "value": "19" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "19" + }, { + "key": "voting_period_start", + "value": "19" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "10000000uluna" + }] + }] + }, { + "height": "195091", + "txhash": "3EBEF8BAECFF3FD6776902421BFA67FBE68A32A22E7E64181ADE72DF0C16F5F4", + "data": "0114", + "raw_log": "[{\"msg_index\":0,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1aejyt9tc70jutejyjmumr7wmnw7hcs5v8hhtpd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1aejyt9tc70jutejyjmumr7wmnw7hcs5v8hhtpd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"234000uluna\"},{\"key\":\"proposal_id\",\"value\":\"20\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"20\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"234000uluna\"}]}]}]", + "logs": [{ + "msg_index": 0, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1aejyt9tc70jutejyjmumr7wmnw7hcs5v8hhtpd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1aejyt9tc70jutejyjmumr7wmnw7hcs5v8hhtpd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "234000uluna" + }, { + "key": "proposal_id", + "value": "20" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "20" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "234000uluna" + }] + }] + }], + "gas_wanted": "93733", + "gas_used": "62558", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [{ + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "test", + "description": "test" + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "234000" + }], + "proposer": "terra1aejyt9tc70jutejyjmumr7wmnw7hcs5v8hhtpd" + } + }], + "fee": { + "amount": [{ + "denom": "uluna", + "amount": "1406" + }], + "gas": "93733" + }, + "signatures": [{ + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AjiDoC6O2rRRfQC+3aAQ4YOG+f4CsIXjYHjnQp71etva" + }, + "signature": "3t8W0EBOt1iWjpFWTEcbbVCJ+9HKWKaToYAraZX6VD0WrPKZoPYN2aeV4I67a1Q9bilDzfxqj71p7FmsdE8ONA==" + }], + "memo": "" + } + }, + "timestamp": "2019-12-21T07:49:49Z", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1aejyt9tc70jutejyjmumr7wmnw7hcs5v8hhtpd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1aejyt9tc70jutejyjmumr7wmnw7hcs5v8hhtpd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "234000uluna" + }, { + "key": "proposal_id", + "value": "20" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "20" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "234000uluna" + }] + }] + }, { + "height": "565678", + "txhash": "A18A902E2F7EC9BB6D2901BE12D51E1D226B127F5EE0F4382BBA278D1953DB85", + "data": "0115", + "raw_log": "[{\"msg_index\":0,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1w7auhmup9rh77g3j7fjluhfxw20udn406lhc7p\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1w7auhmup9rh77g3j7fjluhfxw20udn406lhc7p\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"10000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"21\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"21\"},{\"key\":\"voting_period_start\",\"value\":\"21\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"10000000uluna\"}]}]}]", + "logs": [{ + "msg_index": 0, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1w7auhmup9rh77g3j7fjluhfxw20udn406lhc7p" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1w7auhmup9rh77g3j7fjluhfxw20udn406lhc7p" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "10000000uluna" + }, { + "key": "proposal_id", + "value": "21" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "21" + }, { + "key": "voting_period_start", + "value": "21" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "10000000uluna" + }] + }] + }], + "gas_wanted": "119800", + "gas_used": "79657", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [{ + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "test", + "description": "test" + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "10000000" + }], + "proposer": "terra1w7auhmup9rh77g3j7fjluhfxw20udn406lhc7p" + } + }], + "fee": { + "amount": [{ + "denom": "uluna", + "amount": "1797" + }], + "gas": "119800" + }, + "signatures": [{ + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Aj6piYTWNrv+aT0PqbEelNUatIwlapVWYPtAnZFbGSCK" + }, + "signature": "4xsJhJvg/16NiZa6ymNRXRStGG6xyttHRJ8YX10X85F5ifs9lB7IMhRVsCenC5LKFy++okBXKpSm7vbUYceY5A==" + }], + "memo": "" + } + }, + "timestamp": "2020-01-13T03:13:23Z", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1w7auhmup9rh77g3j7fjluhfxw20udn406lhc7p" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1w7auhmup9rh77g3j7fjluhfxw20udn406lhc7p" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "10000000uluna" + }, { + "key": "proposal_id", + "value": "21" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "21" + }, { + "key": "voting_period_start", + "value": "21" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "10000000uluna" + }] + }] + }, { + "height": "569275", + "txhash": "43CA8060FAB24DF3A49F7343FADD8C01137919CD7D7AFA4E13FF4CB9B56FF04D", + "data": "0116", + "raw_log": "[{\"msg_index\":0,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"10000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"22\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"22\"},{\"key\":\"voting_period_start\",\"value\":\"22\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"10000000uluna\"}]}]}]", + "logs": [{ + "msg_index": 0, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "10000000uluna" + }, { + "key": "proposal_id", + "value": "22" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "22" + }, { + "key": "voting_period_start", + "value": "22" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "10000000uluna" + }] + }] + }], + "gas_wanted": "122800", + "gas_used": "81169", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [{ + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "test", + "description": "test" + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "10000000" + }], + "proposer": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + } + }], + "fee": { + "amount": [{ + "denom": "uluna", + "amount": "1842" + }], + "gas": "122800" + }, + "signatures": [{ + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A5CDIb12doIQR5vbiqPsVOcexPO+fOPR5E7ioVcv7+mf" + }, + "signature": "gQBYuOGQjJ+cxfHy/5xW/XWFyT1Grvj0GRG0pymjZk8QXRcETOO0NA42lSv5v8aiQbOOHx0JxuXujs3SvPli9w==" + }], + "memo": "" + } + }, + "timestamp": "2020-01-13T08:32:09Z", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "10000000uluna" + }, { + "key": "proposal_id", + "value": "22" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "22" + }, { + "key": "voting_period_start", + "value": "22" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "10000000uluna" + }] + }] + }, { + "height": "632333", + "txhash": "AFFFF0C5ED1DD825B8636DC73E5E782460EB330269A3FC3F7B381B2865110C77", + "data": "0118", + "raw_log": "[{\"msg_index\":0,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"10000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"24\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"24\"},{\"key\":\"voting_period_start\",\"value\":\"24\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"10000000uluna\"}]}]}]", + "logs": [{ + "msg_index": 0, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "10000000uluna" + }, { + "key": "proposal_id", + "value": "24" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "24" + }, { + "key": "voting_period_start", + "value": "24" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "10000000uluna" + }] + }] + }], + "gas_wanted": "170600", + "gas_used": "113261", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [{ + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "distribution/CommunityPoolSpendProposal", + "value": { + "title": "cc", + "description": "cc", + "recipient": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej", + "amount": [{ + "denom": "uluna", + "amount": "100000000" + }] + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "10000000" + }], + "proposer": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + } + }], + "fee": { + "amount": [{ + "denom": "uluna", + "amount": "2559" + }], + "gas": "170600" + }, + "signatures": [{ + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A5CDIb12doIQR5vbiqPsVOcexPO+fOPR5E7ioVcv7+mf" + }, + "signature": "Og+2jBFha1jEVg5X4tDK7gNtkiLEGHiX1KSCsJMKUqZDPREucSSvBpr+vHMzDzEwhwF+QDK7Cr7pIysapi2WZA==" + }], + "memo": "" + } + }, + "timestamp": "2020-01-17T05:42:03Z", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "10000000uluna" + }, { + "key": "proposal_id", + "value": "24" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "24" + }, { + "key": "voting_period_start", + "value": "24" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "10000000uluna" + }] + }] + }, { + "height": "1282980", + "txhash": "C2D569D5E3AA1AC8EE54AE2E6FEDB1086FDAEE6A6918252B3D9871426B303080", + "data": "011A", + "raw_log": "[{\"msg_index\":0,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"26\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"26\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]}]", + "logs": [{ + "msg_index": 0, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "26" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "26" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }], + "gas_wanted": "200000", + "gas_used": "62096", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [{ + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "test proposal", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }], + "fee": { + "amount": [{ + "denom": "uluna", + "amount": "1000000" + }], + "gas": "200000" + }, + "signatures": [{ + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A+BRCJKmrngTNtCiN6yL5eGqafSmt/XTwHsO3QSmOScV" + }, + "signature": "1+DqWGIh/L5vh6oEy0rEvkgab+Oc1AZD4ZqysWuWii1KlyVCpAg8G3LKxOvo5Ou/39TfDrEFE/CvR5XtFo9g7Q==" + }], + "memo": "" + } + }, + "timestamp": "2020-02-26T06:55:30Z", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "26" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "26" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "height": "1282987", + "txhash": "BA5C0C60060FFD3030A2118C49F19BD466FEB497424EEDE69FA41E737131A7C3", + "data": "011B011C", + "raw_log": "[{\"msg_index\":0,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"27\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"27\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":1,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"28\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"28\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]}]", + "logs": [{ + "msg_index": 0, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "27" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "27" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 1, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "28" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "28" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }], + "gas_wanted": "200000", + "gas_used": "103289", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [{ + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "test proposal", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "test proposal", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }], + "fee": { + "amount": [{ + "denom": "uluna", + "amount": "1000000" + }], + "gas": "200000" + }, + "signatures": [{ + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A+BRCJKmrngTNtCiN6yL5eGqafSmt/XTwHsO3QSmOScV" + }, + "signature": "BInxJgo2J8956iKfr/IJ3nnfqfxW34rzPGrYl59p4BssfUOR5QqPYUnG6aBWOc5KRz84zd01sHg5ppni/lO9rw==" + }], + "memo": "" + } + }, + "timestamp": "2020-02-26T06:56:07Z", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "27" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "28" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "27" + }, { + "key": "proposal_id", + "value": "28" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "height": "1282995", + "txhash": "6702BA0BE804D6F6C591367223BCC84890EE484C9B8679508025D9F926253EF7", + "data": "011D011E", + "raw_log": "[{\"msg_index\":0,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"29\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"29\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":1,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"30\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"30\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]}]", + "logs": [{ + "msg_index": 0, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "29" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "29" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 1, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "30" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "30" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }], + "gas_wanted": "200000", + "gas_used": "102559", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [{ + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }], + "fee": { + "amount": [{ + "denom": "uluna", + "amount": "1000000" + }], + "gas": "200000" + }, + "signatures": [{ + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A+BRCJKmrngTNtCiN6yL5eGqafSmt/XTwHsO3QSmOScV" + }, + "signature": "N9lynTeSr7Ld/IXcGL8EUPZsm9jQQ5tvag7bZgYJ8N4pCAng9cfQCvkQ8XSXabmWpjG0Cby/216fA0JWKjWVyw==" + }], + "memo": "" + } + }, + "timestamp": "2020-02-26T06:56:50Z", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "29" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "30" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "29" + }, { + "key": "proposal_id", + "value": "30" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "height": "1283032", + "txhash": "0A4E560665EA50B81577E7657088CABBF77FEB856A9399B0A0FC79B1FDD80945", + "data": "011F0120012101220123012401250126012701280129012A012B012C012D012E012F0130013101320133013401350136013701380139013A013B013C013D013E013F0140014101420143014401450146014701480149014A014B014C014D014E014F0150015101520153015401550156015701580159015A015B015C015D015E015F0160016101620163016401650166016701680169016A016B016C016D016E016F0170017101720173017401750176017701780179017A017B017C017D017E017F028001028101028201", + "raw_log": "[{\"msg_index\":0,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"31\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"31\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":1,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"32\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"32\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":2,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"33\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"33\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":3,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"34\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"34\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":4,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"35\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"35\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":5,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"36\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"36\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":6,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"37\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"37\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":7,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"38\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"38\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":8,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"39\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"39\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":9,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"40\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"40\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":10,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"41\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"41\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":11,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"42\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"42\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":12,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"43\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"43\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":13,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"44\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"44\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":14,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"45\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"45\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":15,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"46\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"46\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":16,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"47\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"47\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":17,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"48\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"48\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":18,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"49\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"49\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":19,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"50\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"50\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":20,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"51\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"51\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":21,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"52\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"52\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":22,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"53\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"53\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":23,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"54\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"54\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":24,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"55\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"55\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":25,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"56\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"56\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":26,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"57\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"57\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":27,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"58\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"58\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":28,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"59\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"59\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":29,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"60\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"60\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":30,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"61\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"61\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":31,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"62\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"62\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":32,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"63\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"63\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":33,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"64\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"64\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":34,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"65\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"65\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":35,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"66\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"66\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":36,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"67\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"67\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":37,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"68\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"68\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":38,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"69\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"69\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":39,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"70\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"70\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":40,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"71\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"71\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":41,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"72\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"72\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":42,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"73\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"73\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":43,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"74\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"74\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":44,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"75\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"75\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":45,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"76\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"76\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":46,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"77\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"77\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":47,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"78\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"78\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":48,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"79\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"79\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":49,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"80\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"80\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":50,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"81\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"81\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":51,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"82\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"82\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":52,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"83\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"83\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":53,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"84\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"84\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":54,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"85\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"85\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":55,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"86\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"86\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":56,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"87\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"87\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":57,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"88\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"88\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":58,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"89\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"89\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":59,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"90\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"90\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":60,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"91\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"91\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":61,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"92\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"92\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":62,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"93\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"93\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":63,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"94\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"94\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":64,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"95\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"95\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":65,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"96\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"96\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":66,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"97\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"97\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":67,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"98\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"98\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":68,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"99\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"99\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":69,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"100\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"100\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":70,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"101\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"101\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":71,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"102\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"102\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":72,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"103\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"103\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":73,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"104\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"104\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":74,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"105\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"105\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":75,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"106\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"106\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":76,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"107\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"107\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":77,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"108\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"108\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":78,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"109\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"109\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":79,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"110\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"110\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":80,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"111\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"111\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":81,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"112\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"112\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":82,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"113\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"113\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":83,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"114\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"114\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":84,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"115\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"115\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":85,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"116\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"116\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":86,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"117\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"117\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":87,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"118\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"118\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":88,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"119\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"119\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":89,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"120\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"120\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":90,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"121\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"121\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":91,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"122\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"122\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":92,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"123\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"123\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":93,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"124\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"124\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":94,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"125\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"125\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":95,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"126\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"126\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":96,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"127\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"127\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":97,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"128\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"128\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":98,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"129\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"129\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":99,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"130\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"130\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]}]", + "logs": [{ + "msg_index": 0, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "31" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "31" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 1, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "32" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "32" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 2, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "33" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "33" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 3, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "34" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "34" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 4, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "35" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "35" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 5, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "36" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "36" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 6, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "37" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "37" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 7, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "38" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "38" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 8, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "39" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "39" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 9, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "40" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "40" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 10, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "41" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "41" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 11, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "42" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "42" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 12, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "43" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "43" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 13, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "44" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "44" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 14, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "45" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "45" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 15, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "46" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "46" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 16, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "47" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "47" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 17, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "48" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "48" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 18, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "49" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "49" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 19, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "50" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "50" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 20, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "51" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "51" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 21, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "52" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "52" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 22, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "53" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "53" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 23, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "54" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "54" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 24, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "55" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "55" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 25, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "56" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "56" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 26, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "57" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "57" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 27, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "58" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "58" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 28, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "59" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "59" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 29, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "60" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "60" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 30, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "61" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "61" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 31, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "62" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "62" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 32, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "63" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "63" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 33, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "64" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "64" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 34, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "65" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "65" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 35, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "66" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "66" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 36, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "67" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "67" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 37, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "68" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "68" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 38, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "69" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "69" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 39, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "70" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "70" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 40, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "71" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "71" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 41, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "72" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "72" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 42, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "73" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "73" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 43, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "74" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "74" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 44, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "75" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "75" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 45, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "76" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "76" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 46, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "77" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "77" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 47, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "78" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "78" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 48, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "79" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "79" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 49, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "80" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "80" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 50, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "81" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "81" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 51, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "82" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "82" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 52, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "83" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "83" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 53, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "84" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "84" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 54, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "85" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "85" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 55, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "86" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "86" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 56, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "87" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "87" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 57, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "88" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "88" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 58, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "89" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "89" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 59, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "90" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "90" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 60, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "91" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "91" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 61, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "92" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "92" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 62, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "93" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "93" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 63, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "94" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "94" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 64, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "95" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "95" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 65, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "96" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "96" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 66, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "97" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "97" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 67, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "98" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "98" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 68, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "99" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "99" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 69, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "100" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "100" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 70, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "101" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "101" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 71, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "102" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "102" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 72, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "103" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "103" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 73, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "104" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "104" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 74, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "105" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "105" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 75, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "106" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "106" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 76, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "107" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "107" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 77, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "108" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "108" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 78, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "109" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "109" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 79, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "110" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "110" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 80, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "111" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "111" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 81, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "112" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "112" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 82, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "113" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "113" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 83, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "114" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "114" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 84, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "115" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "115" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 85, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "116" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "116" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 86, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "117" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "117" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 87, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "118" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "118" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 88, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "119" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "119" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 89, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "120" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "120" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 90, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "121" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "121" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 91, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "122" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "122" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 92, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "123" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "123" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 93, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "124" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "124" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 94, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "125" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "125" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 95, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "126" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "126" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 96, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "127" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "127" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 97, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "128" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "128" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 98, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "129" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "129" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 99, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "130" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "130" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }], + "gas_wanted": "20000000", + "gas_used": "3915840", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [{ + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "HEEEEYYY", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }], + "fee": { + "amount": [{ + "denom": "uluna", + "amount": "100000000" + }], + "gas": "20000000" + }, + "signatures": [{ + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A+BRCJKmrngTNtCiN6yL5eGqafSmt/XTwHsO3QSmOScV" + }, + "signature": "kkceYZ9z2GfyET/FG9DEQIvrk+a9srLJk5qMoSITssY4Hm2EXVScuZK496HTlLM8+TFOQLcRx1GZPMd+orF2nA==" + }], + "memo": "" + } + }, + "timestamp": "2020-02-26T07:00:07Z", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "31" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "32" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "33" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "34" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "35" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "36" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "37" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "38" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "39" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "40" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "41" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "42" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "43" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "44" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "45" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "46" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "47" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "48" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "49" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "50" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "51" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "52" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "53" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "54" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "55" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "56" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "57" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "58" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "59" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "60" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "61" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "62" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "63" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "64" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "65" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "66" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "67" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "68" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "69" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "70" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "71" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "72" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "73" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "74" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "75" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "76" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "77" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "78" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "79" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "80" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "81" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "82" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "83" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "84" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "85" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "86" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "87" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "88" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "89" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "90" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "91" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "92" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "93" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "94" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "95" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "96" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "97" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "98" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "99" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "100" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "101" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "102" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "103" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "104" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "105" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "106" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "107" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "108" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "109" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "110" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "111" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "112" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "113" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "114" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "115" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "116" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "117" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "118" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "119" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "120" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "121" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "122" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "123" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "124" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "125" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "126" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "127" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "128" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "129" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "130" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "31" + }, { + "key": "proposal_id", + "value": "32" + }, { + "key": "proposal_id", + "value": "33" + }, { + "key": "proposal_id", + "value": "34" + }, { + "key": "proposal_id", + "value": "35" + }, { + "key": "proposal_id", + "value": "36" + }, { + "key": "proposal_id", + "value": "37" + }, { + "key": "proposal_id", + "value": "38" + }, { + "key": "proposal_id", + "value": "39" + }, { + "key": "proposal_id", + "value": "40" + }, { + "key": "proposal_id", + "value": "41" + }, { + "key": "proposal_id", + "value": "42" + }, { + "key": "proposal_id", + "value": "43" + }, { + "key": "proposal_id", + "value": "44" + }, { + "key": "proposal_id", + "value": "45" + }, { + "key": "proposal_id", + "value": "46" + }, { + "key": "proposal_id", + "value": "47" + }, { + "key": "proposal_id", + "value": "48" + }, { + "key": "proposal_id", + "value": "49" + }, { + "key": "proposal_id", + "value": "50" + }, { + "key": "proposal_id", + "value": "51" + }, { + "key": "proposal_id", + "value": "52" + }, { + "key": "proposal_id", + "value": "53" + }, { + "key": "proposal_id", + "value": "54" + }, { + "key": "proposal_id", + "value": "55" + }, { + "key": "proposal_id", + "value": "56" + }, { + "key": "proposal_id", + "value": "57" + }, { + "key": "proposal_id", + "value": "58" + }, { + "key": "proposal_id", + "value": "59" + }, { + "key": "proposal_id", + "value": "60" + }, { + "key": "proposal_id", + "value": "61" + }, { + "key": "proposal_id", + "value": "62" + }, { + "key": "proposal_id", + "value": "63" + }, { + "key": "proposal_id", + "value": "64" + }, { + "key": "proposal_id", + "value": "65" + }, { + "key": "proposal_id", + "value": "66" + }, { + "key": "proposal_id", + "value": "67" + }, { + "key": "proposal_id", + "value": "68" + }, { + "key": "proposal_id", + "value": "69" + }, { + "key": "proposal_id", + "value": "70" + }, { + "key": "proposal_id", + "value": "71" + }, { + "key": "proposal_id", + "value": "72" + }, { + "key": "proposal_id", + "value": "73" + }, { + "key": "proposal_id", + "value": "74" + }, { + "key": "proposal_id", + "value": "75" + }, { + "key": "proposal_id", + "value": "76" + }, { + "key": "proposal_id", + "value": "77" + }, { + "key": "proposal_id", + "value": "78" + }, { + "key": "proposal_id", + "value": "79" + }, { + "key": "proposal_id", + "value": "80" + }, { + "key": "proposal_id", + "value": "81" + }, { + "key": "proposal_id", + "value": "82" + }, { + "key": "proposal_id", + "value": "83" + }, { + "key": "proposal_id", + "value": "84" + }, { + "key": "proposal_id", + "value": "85" + }, { + "key": "proposal_id", + "value": "86" + }, { + "key": "proposal_id", + "value": "87" + }, { + "key": "proposal_id", + "value": "88" + }, { + "key": "proposal_id", + "value": "89" + }, { + "key": "proposal_id", + "value": "90" + }, { + "key": "proposal_id", + "value": "91" + }, { + "key": "proposal_id", + "value": "92" + }, { + "key": "proposal_id", + "value": "93" + }, { + "key": "proposal_id", + "value": "94" + }, { + "key": "proposal_id", + "value": "95" + }, { + "key": "proposal_id", + "value": "96" + }, { + "key": "proposal_id", + "value": "97" + }, { + "key": "proposal_id", + "value": "98" + }, { + "key": "proposal_id", + "value": "99" + }, { + "key": "proposal_id", + "value": "100" + }, { + "key": "proposal_id", + "value": "101" + }, { + "key": "proposal_id", + "value": "102" + }, { + "key": "proposal_id", + "value": "103" + }, { + "key": "proposal_id", + "value": "104" + }, { + "key": "proposal_id", + "value": "105" + }, { + "key": "proposal_id", + "value": "106" + }, { + "key": "proposal_id", + "value": "107" + }, { + "key": "proposal_id", + "value": "108" + }, { + "key": "proposal_id", + "value": "109" + }, { + "key": "proposal_id", + "value": "110" + }, { + "key": "proposal_id", + "value": "111" + }, { + "key": "proposal_id", + "value": "112" + }, { + "key": "proposal_id", + "value": "113" + }, { + "key": "proposal_id", + "value": "114" + }, { + "key": "proposal_id", + "value": "115" + }, { + "key": "proposal_id", + "value": "116" + }, { + "key": "proposal_id", + "value": "117" + }, { + "key": "proposal_id", + "value": "118" + }, { + "key": "proposal_id", + "value": "119" + }, { + "key": "proposal_id", + "value": "120" + }, { + "key": "proposal_id", + "value": "121" + }, { + "key": "proposal_id", + "value": "122" + }, { + "key": "proposal_id", + "value": "123" + }, { + "key": "proposal_id", + "value": "124" + }, { + "key": "proposal_id", + "value": "125" + }, { + "key": "proposal_id", + "value": "126" + }, { + "key": "proposal_id", + "value": "127" + }, { + "key": "proposal_id", + "value": "128" + }, { + "key": "proposal_id", + "value": "129" + }, { + "key": "proposal_id", + "value": "130" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "height": "1283040", + "txhash": "D60EDA6B2AA214153899081B992BD5050A9F82838E911F4D831892AFCFAA95AE", + "data": "028301028401028501028601028701028801028901028A01028B01028C01028D01028E01028F01029001029101029201029301029401029501029601029701029801029901029A01029B01029C01029D01029E01029F0102A00102A10102A20102A30102A40102A50102A60102A70102A80102A90102AA0102AB0102AC0102AD0102AE0102AF0102B00102B10102B20102B30102B40102B50102B60102B70102B80102B90102BA0102BB0102BC0102BD0102BE0102BF0102C00102C10102C20102C30102C40102C50102C60102C70102C80102C90102CA0102CB0102CC0102CD0102CE0102CF0102D00102D10102D20102D30102D40102D50102D60102D70102D80102D90102DA0102DB0102DC0102DD0102DE0102DF0102E00102E10102E20102E30102E40102E50102E601", + "raw_log": "[{\"msg_index\":0,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"131\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"131\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":1,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"132\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"132\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":2,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"133\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"133\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":3,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"134\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"134\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":4,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"135\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"135\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":5,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"136\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"136\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":6,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"137\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"137\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":7,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"138\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"138\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":8,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"139\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"139\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":9,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"140\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"140\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":10,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"141\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"141\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":11,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"142\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"142\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":12,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"143\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"143\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":13,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"144\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"144\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":14,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"145\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"145\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":15,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"146\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"146\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":16,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"147\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"147\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":17,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"148\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"148\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":18,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"149\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"149\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":19,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"150\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"150\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":20,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"151\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"151\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":21,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"152\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"152\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":22,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"153\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"153\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":23,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"154\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"154\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":24,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"155\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"155\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":25,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"156\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"156\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":26,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"157\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"157\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":27,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"158\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"158\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":28,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"159\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"159\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":29,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"160\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"160\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":30,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"161\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"161\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":31,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"162\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"162\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":32,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"163\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"163\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":33,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"164\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"164\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":34,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"165\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"165\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":35,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"166\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"166\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":36,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"167\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"167\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":37,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"168\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"168\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":38,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"169\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"169\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":39,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"170\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"170\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":40,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"171\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"171\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":41,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"172\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"172\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":42,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"173\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"173\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":43,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"174\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"174\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":44,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"175\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"175\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":45,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"176\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"176\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":46,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"177\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"177\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":47,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"178\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"178\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":48,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"179\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"179\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":49,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"180\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"180\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":50,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"181\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"181\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":51,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"182\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"182\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":52,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"183\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"183\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":53,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"184\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"184\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":54,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"185\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"185\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":55,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"186\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"186\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":56,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"187\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"187\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":57,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"188\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"188\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":58,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"189\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"189\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":59,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"190\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"190\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":60,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"191\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"191\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":61,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"192\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"192\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":62,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"193\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"193\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":63,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"194\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"194\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":64,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"195\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"195\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":65,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"196\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"196\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":66,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"197\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"197\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":67,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"198\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"198\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":68,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"199\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"199\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":69,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"200\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"200\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":70,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"201\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"201\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":71,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"202\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"202\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":72,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"203\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"203\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":73,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"204\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"204\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":74,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"205\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"205\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":75,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"206\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"206\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":76,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"207\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"207\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":77,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"208\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"208\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":78,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"209\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"209\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":79,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"210\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"210\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":80,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"211\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"211\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":81,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"212\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"212\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":82,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"213\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"213\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":83,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"214\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"214\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":84,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"215\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"215\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":85,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"216\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"216\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":86,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"217\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"217\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":87,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"218\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"218\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":88,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"219\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"219\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":89,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"220\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"220\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":90,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"221\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"221\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":91,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"222\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"222\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":92,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"223\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"223\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":93,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"224\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"224\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":94,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"225\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"225\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":95,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"226\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"226\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":96,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"227\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"227\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":97,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"228\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"228\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":98,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"229\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"229\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]},{\"msg_index\":99,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"230\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"230\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]}]", + "logs": [{ + "msg_index": 0, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "131" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "131" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 1, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "132" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "132" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 2, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "133" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "133" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 3, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "134" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "134" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 4, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "135" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "135" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 5, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "136" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "136" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 6, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "137" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "137" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 7, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "138" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "138" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 8, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "139" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "139" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 9, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "140" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "140" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 10, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "141" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "141" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 11, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "142" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "142" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 12, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "143" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "143" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 13, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "144" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "144" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 14, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "145" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "145" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 15, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "146" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "146" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 16, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "147" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "147" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 17, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "148" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "148" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 18, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "149" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "149" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 19, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "150" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "150" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 20, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "151" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "151" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 21, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "152" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "152" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 22, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "153" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "153" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 23, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "154" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "154" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 24, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "155" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "155" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 25, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "156" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "156" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 26, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "157" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "157" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 27, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "158" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "158" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 28, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "159" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "159" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 29, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "160" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "160" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 30, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "161" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "161" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 31, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "162" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "162" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 32, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "163" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "163" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 33, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "164" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "164" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 34, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "165" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "165" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 35, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "166" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "166" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 36, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "167" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "167" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 37, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "168" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "168" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 38, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "169" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "169" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 39, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "170" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "170" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 40, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "171" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "171" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 41, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "172" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "172" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 42, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "173" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "173" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 43, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "174" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "174" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 44, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "175" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "175" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 45, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "176" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "176" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 46, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "177" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "177" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 47, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "178" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "178" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 48, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "179" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "179" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 49, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "180" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "180" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 50, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "181" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "181" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 51, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "182" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "182" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 52, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "183" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "183" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 53, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "184" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "184" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 54, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "185" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "185" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 55, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "186" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "186" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 56, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "187" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "187" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 57, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "188" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "188" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 58, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "189" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "189" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 59, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "190" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "190" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 60, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "191" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "191" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 61, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "192" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "192" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 62, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "193" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "193" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 63, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "194" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "194" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 64, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "195" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "195" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 65, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "196" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "196" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 66, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "197" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "197" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 67, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "198" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "198" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 68, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "199" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "199" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 69, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "200" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "200" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 70, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "201" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "201" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 71, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "202" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "202" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 72, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "203" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "203" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 73, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "204" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "204" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 74, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "205" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "205" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 75, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "206" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "206" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 76, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "207" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "207" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 77, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "208" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "208" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 78, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "209" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "209" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 79, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "210" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "210" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 80, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "211" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "211" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 81, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "212" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "212" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 82, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "213" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "213" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 83, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "214" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "214" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 84, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "215" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "215" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 85, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "216" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "216" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 86, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "217" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "217" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 87, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "218" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "218" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 88, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "219" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "219" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 89, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "220" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "220" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 90, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "221" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "221" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 91, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "222" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "222" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 92, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "223" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "223" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 93, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "224" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "224" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 94, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "225" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "225" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 95, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "226" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "226" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 96, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "227" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "227" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 97, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "228" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "228" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 98, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "229" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "229" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "msg_index": 99, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "230" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "230" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }], + "gas_wanted": "20000000", + "gas_used": "3912873", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [{ + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }, { + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "Watup", + "description": "Yo." + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + } + }], + "fee": { + "amount": [{ + "denom": "uluna", + "amount": "100000000" + }], + "gas": "20000000" + }, + "signatures": [{ + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A+BRCJKmrngTNtCiN6yL5eGqafSmt/XTwHsO3QSmOScV" + }, + "signature": "0IuNkl2y5sb1xRyCLkFcBRYe40FSWba2pdG6WAv2ZWlEW9JHFCjC7NhMhV8wP/tslnFjlMz8ksD5ds7gmLk6Bw==" + }], + "memo": "" + } + }, + "timestamp": "2020-02-26T07:00:50Z", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1r905nrynarf25c0076kw44l9w4nl65ua0frgxd" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "131" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "132" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "133" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "134" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "135" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "136" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "137" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "138" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "139" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "140" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "141" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "142" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "143" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "144" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "145" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "146" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "147" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "148" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "149" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "150" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "151" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "152" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "153" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "154" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "155" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "156" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "157" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "158" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "159" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "160" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "161" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "162" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "163" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "164" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "165" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "166" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "167" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "168" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "169" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "170" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "171" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "172" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "173" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "174" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "175" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "176" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "177" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "178" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "179" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "180" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "181" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "182" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "183" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "184" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "185" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "186" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "187" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "188" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "189" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "190" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "191" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "192" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "193" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "194" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "195" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "196" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "197" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "198" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "199" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "200" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "201" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "202" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "203" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "204" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "205" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "206" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "207" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "208" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "209" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "210" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "211" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "212" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "213" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "214" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "215" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "216" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "217" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "218" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "219" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "220" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "221" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "222" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "223" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "224" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "225" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "226" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "227" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "228" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "229" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "230" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "131" + }, { + "key": "proposal_id", + "value": "132" + }, { + "key": "proposal_id", + "value": "133" + }, { + "key": "proposal_id", + "value": "134" + }, { + "key": "proposal_id", + "value": "135" + }, { + "key": "proposal_id", + "value": "136" + }, { + "key": "proposal_id", + "value": "137" + }, { + "key": "proposal_id", + "value": "138" + }, { + "key": "proposal_id", + "value": "139" + }, { + "key": "proposal_id", + "value": "140" + }, { + "key": "proposal_id", + "value": "141" + }, { + "key": "proposal_id", + "value": "142" + }, { + "key": "proposal_id", + "value": "143" + }, { + "key": "proposal_id", + "value": "144" + }, { + "key": "proposal_id", + "value": "145" + }, { + "key": "proposal_id", + "value": "146" + }, { + "key": "proposal_id", + "value": "147" + }, { + "key": "proposal_id", + "value": "148" + }, { + "key": "proposal_id", + "value": "149" + }, { + "key": "proposal_id", + "value": "150" + }, { + "key": "proposal_id", + "value": "151" + }, { + "key": "proposal_id", + "value": "152" + }, { + "key": "proposal_id", + "value": "153" + }, { + "key": "proposal_id", + "value": "154" + }, { + "key": "proposal_id", + "value": "155" + }, { + "key": "proposal_id", + "value": "156" + }, { + "key": "proposal_id", + "value": "157" + }, { + "key": "proposal_id", + "value": "158" + }, { + "key": "proposal_id", + "value": "159" + }, { + "key": "proposal_id", + "value": "160" + }, { + "key": "proposal_id", + "value": "161" + }, { + "key": "proposal_id", + "value": "162" + }, { + "key": "proposal_id", + "value": "163" + }, { + "key": "proposal_id", + "value": "164" + }, { + "key": "proposal_id", + "value": "165" + }, { + "key": "proposal_id", + "value": "166" + }, { + "key": "proposal_id", + "value": "167" + }, { + "key": "proposal_id", + "value": "168" + }, { + "key": "proposal_id", + "value": "169" + }, { + "key": "proposal_id", + "value": "170" + }, { + "key": "proposal_id", + "value": "171" + }, { + "key": "proposal_id", + "value": "172" + }, { + "key": "proposal_id", + "value": "173" + }, { + "key": "proposal_id", + "value": "174" + }, { + "key": "proposal_id", + "value": "175" + }, { + "key": "proposal_id", + "value": "176" + }, { + "key": "proposal_id", + "value": "177" + }, { + "key": "proposal_id", + "value": "178" + }, { + "key": "proposal_id", + "value": "179" + }, { + "key": "proposal_id", + "value": "180" + }, { + "key": "proposal_id", + "value": "181" + }, { + "key": "proposal_id", + "value": "182" + }, { + "key": "proposal_id", + "value": "183" + }, { + "key": "proposal_id", + "value": "184" + }, { + "key": "proposal_id", + "value": "185" + }, { + "key": "proposal_id", + "value": "186" + }, { + "key": "proposal_id", + "value": "187" + }, { + "key": "proposal_id", + "value": "188" + }, { + "key": "proposal_id", + "value": "189" + }, { + "key": "proposal_id", + "value": "190" + }, { + "key": "proposal_id", + "value": "191" + }, { + "key": "proposal_id", + "value": "192" + }, { + "key": "proposal_id", + "value": "193" + }, { + "key": "proposal_id", + "value": "194" + }, { + "key": "proposal_id", + "value": "195" + }, { + "key": "proposal_id", + "value": "196" + }, { + "key": "proposal_id", + "value": "197" + }, { + "key": "proposal_id", + "value": "198" + }, { + "key": "proposal_id", + "value": "199" + }, { + "key": "proposal_id", + "value": "200" + }, { + "key": "proposal_id", + "value": "201" + }, { + "key": "proposal_id", + "value": "202" + }, { + "key": "proposal_id", + "value": "203" + }, { + "key": "proposal_id", + "value": "204" + }, { + "key": "proposal_id", + "value": "205" + }, { + "key": "proposal_id", + "value": "206" + }, { + "key": "proposal_id", + "value": "207" + }, { + "key": "proposal_id", + "value": "208" + }, { + "key": "proposal_id", + "value": "209" + }, { + "key": "proposal_id", + "value": "210" + }, { + "key": "proposal_id", + "value": "211" + }, { + "key": "proposal_id", + "value": "212" + }, { + "key": "proposal_id", + "value": "213" + }, { + "key": "proposal_id", + "value": "214" + }, { + "key": "proposal_id", + "value": "215" + }, { + "key": "proposal_id", + "value": "216" + }, { + "key": "proposal_id", + "value": "217" + }, { + "key": "proposal_id", + "value": "218" + }, { + "key": "proposal_id", + "value": "219" + }, { + "key": "proposal_id", + "value": "220" + }, { + "key": "proposal_id", + "value": "221" + }, { + "key": "proposal_id", + "value": "222" + }, { + "key": "proposal_id", + "value": "223" + }, { + "key": "proposal_id", + "value": "224" + }, { + "key": "proposal_id", + "value": "225" + }, { + "key": "proposal_id", + "value": "226" + }, { + "key": "proposal_id", + "value": "227" + }, { + "key": "proposal_id", + "value": "228" + }, { + "key": "proposal_id", + "value": "229" + }, { + "key": "proposal_id", + "value": "230" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }, { + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "height": "1402119", + "txhash": "05EAB33FE47EFC0CF918983AF1B035ABD65618541E765BBA890159291E6A3067", + "data": "02E801", + "raw_log": "[{\"msg_index\":0,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\"},{\"key\":\"proposal_id\",\"value\":\"232\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"232\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\"}]}]}]", + "logs": [{ + "msg_index": 0, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount" + }, { + "key": "proposal_id", + "value": "232" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "232" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount" + }] + }] + }], + "gas_wanted": "105866", + "gas_used": "70656", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [{ + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "test", + "description": "1" + } + }, + "initial_deposit": [], + "proposer": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + } + }], + "fee": { + "amount": [{ + "denom": "uluna", + "amount": "1588" + }], + "gas": "105866" + }, + "signatures": [{ + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A5CDIb12doIQR5vbiqPsVOcexPO+fOPR5E7ioVcv7+mf" + }, + "signature": "KQgrZA2IfG5zWwJSOz4hm7vCOVMxgCo4DHAIrJmiM7oBpm9UrDuzUzpQO/kRKmTHkhguU7cBrqVjdrIeJQvKUg==" + }], + "memo": "" + } + }, + "timestamp": "2020-03-04T14:55:44Z", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount" + }, { + "key": "proposal_id", + "value": "232" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "232" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount" + }] + }] + }, { + "height": "1402121", + "txhash": "CAE76F9D10BEB12A2EA2293E7002411E178BBBD855F9439D6530C8A64E9C41E6", + "data": "02E901", + "raw_log": "[{\"msg_index\":0,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"1000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"233\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"233\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"1000000uluna\"}]}]}]", + "logs": [{ + "msg_index": 0, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "233" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "233" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }], + "gas_wanted": "107933", + "gas_used": "72588", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [{ + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "cosmos-sdk/TextProposal", + "value": { + "title": "test", + "description": "1" + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "1000000" + }], + "proposer": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + } + }], + "fee": { + "amount": [{ + "denom": "uluna", + "amount": "1619" + }], + "gas": "107933" + }, + "signatures": [{ + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A5CDIb12doIQR5vbiqPsVOcexPO+fOPR5E7ioVcv7+mf" + }, + "signature": "8N5g/5kE4LOKy2hVm3icHva4wLJHLvuptEbtXqDV1odAMEAq/d0aCasGb+462ni4qk9NrSGQc+szjBk2dtJsrw==" + }], + "memo": "" + } + }, + "timestamp": "2020-03-04T14:55:54Z", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "1000000uluna" + }, { + "key": "proposal_id", + "value": "233" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "233" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "1000000uluna" + }] + }] + }, { + "height": "1409635", + "txhash": "3381F144B4411A28ABD6C2E00A4C6C6C6AE5F8BB78D705558C8528614007A589", + "data": "02EA01", + "raw_log": "[{\"msg_index\":0,\"success\":true,\"log\":\"\",\"events\":[{\"type\":\"message\",\"attributes\":[{\"key\":\"sender\",\"value\":\"terra1vk20anceu6h9s00d27pjlvslz3avetkvnph7p8\"},{\"key\":\"module\",\"value\":\"cosmos-sdkernance\"},{\"key\":\"sender\",\"value\":\"terra1vk20anceu6h9s00d27pjlvslz3avetkvnph7p8\"},{\"key\":\"action\",\"value\":\"submit_proposal\"}]},{\"type\":\"proposal_deposit\",\"attributes\":[{\"key\":\"amount\",\"value\":\"512000000uluna\"},{\"key\":\"proposal_id\",\"value\":\"234\"}]},{\"type\":\"submit_proposal\",\"attributes\":[{\"key\":\"proposal_id\",\"value\":\"234\"},{\"key\":\"voting_period_start\",\"value\":\"234\"}]},{\"type\":\"transfer\",\"attributes\":[{\"key\":\"recipient\",\"value\":\"terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n\"},{\"key\":\"amount\",\"value\":\"512000000uluna\"}]}]}]", + "logs": [{ + "msg_index": 0, + "success": true, + "log": "", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1vk20anceu6h9s00d27pjlvslz3avetkvnph7p8" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1vk20anceu6h9s00d27pjlvslz3avetkvnph7p8" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "512000000uluna" + }, { + "key": "proposal_id", + "value": "234" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "234" + }, { + "key": "voting_period_start", + "value": "234" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "512000000uluna" + }] + }] + }], + "gas_wanted": "200000", + "gas_used": "84590", + "tx": { + "type": "core/StdTx", + "value": { + "msg": [{ + "type": "cosmos-sdk/MsgSubmitProposal", + "value": { + "content": { + "type": "params/ParameterChangeProposal", + "value": { + "title": "Staking Param Change", + "description": "Update Max Validators", + "changes": [{ + "subspace": "staking", + "key": "MaxValidators", + "value": "105" + }] + } + }, + "initial_deposit": [{ + "denom": "uluna", + "amount": "512000000" + }], + "proposer": "terra1vk20anceu6h9s00d27pjlvslz3avetkvnph7p8" + } + }], + "fee": { + "amount": [{ + "denom": "uluna", + "amount": "3000" + }], + "gas": "200000" + }, + "signatures": [{ + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A5HRXOkr48K4yI9DpOwq3surr8Aq4bzj05lB06eLHNoL" + }, + "signature": "gDfSNsYnqDr+2ojPl/JO4wTMPIrzEFMcIGgdz+e2/QYoIBDEue09z40tmDHz5WjzBmgYc8b/bp60lBAL7z/lnQ==" + }], + "memo": "" + } + }, + "timestamp": "2020-03-05T02:01:45Z", + "events": [{ + "type": "message", + "attributes": [{ + "key": "sender", + "value": "terra1vk20anceu6h9s00d27pjlvslz3avetkvnph7p8" + }, { + "key": "module", + "value": "cosmos-sdkernance" + }, { + "key": "sender", + "value": "terra1vk20anceu6h9s00d27pjlvslz3avetkvnph7p8" + }, { + "key": "action", + "value": "submit_proposal" + }] + }, { + "type": "proposal_deposit", + "attributes": [{ + "key": "amount", + "value": "512000000uluna" + }, { + "key": "proposal_id", + "value": "234" + }] + }, { + "type": "submit_proposal", + "attributes": [{ + "key": "proposal_id", + "value": "234" + }, { + "key": "voting_period_start", + "value": "234" + }] + }, { + "type": "transfer", + "attributes": [{ + "key": "recipient", + "value": "terra10d07y265gmmuvt4z0w9aw880jnsr700juxf95n" + }, { + "key": "amount", + "value": "512000000uluna" + }] + }] + }] +} diff --git a/src/core/gov/msgs/MsgSubmitProposal.spec.ts b/src/core/gov/msgs/MsgSubmitProposal.spec.ts index d242dc61e..203fcad1d 100644 --- a/src/core/gov/msgs/MsgSubmitProposal.spec.ts +++ b/src/core/gov/msgs/MsgSubmitProposal.spec.ts @@ -1,14 +1,27 @@ import { MsgSubmitProposal } from './MsgSubmitProposal'; const MsgSubmitProposalAmino = require('./MsgSubmitProposal.data.json'); +const MsgSubmitProposalAminoV2 = require('./MsgSubmitProposal.data.v2.json'); describe('MsgSubmitProposal', () => { - it('deserializes', () => { + it('legacy: deserializes', () => { MsgSubmitProposalAmino.txs.forEach((txinfo: any) => { txinfo.tx.value.msg.forEach((msg: any) => { if (msg.type == 'gov/MsgSubmitProposal') { // we are not checking for equality of toAmino() because toJSON() doesn't marshal // ParamaterChangeProposal's JSON keys in the same order - MsgSubmitProposal.fromAmino(msg); + MsgSubmitProposal.fromAmino(msg, true); + } + }); + }); + }); + + it('deserializes', () => { + MsgSubmitProposalAminoV2.txs.forEach((txinfo: any) => { + txinfo.tx.value.msg.forEach((msg: any) => { + if (msg.type == 'cosmos-sdk/MsgSubmitProposal') { + // we are not checking for equality of toAmino() because toJSON() doesn't marshal + // ParamaterChangeProposal's JSON keys in the same order + MsgSubmitProposal.fromAmino(msg, false); } }); }); diff --git a/src/core/gov/msgs/MsgSubmitProposal.ts b/src/core/gov/msgs/MsgSubmitProposal.ts index 336bfd50b..fe3591b09 100644 --- a/src/core/gov/msgs/MsgSubmitProposal.ts +++ b/src/core/gov/msgs/MsgSubmitProposal.ts @@ -29,82 +29,94 @@ export class MsgSubmitProposal extends JSONSerializable< this.initial_deposit = new Coins(initial_deposit); } - public static fromAmino(data: MsgSubmitProposal.Amino): MsgSubmitProposal { + public static fromAmino( + data: MsgSubmitProposal.Amino, + isClassic?: boolean + ): MsgSubmitProposal { const { value: { content, initial_deposit, proposer }, } = data; return new MsgSubmitProposal( - Proposal.Content.fromAmino(content), + Proposal.Content.fromAmino(content, isClassic), Coins.fromAmino(initial_deposit), proposer ); } - public toAmino(): MsgSubmitProposal.Amino { + public toAmino(isClassic?: boolean): MsgSubmitProposal.Amino { const { content, initial_deposit, proposer } = this; return { - type: 'gov/MsgSubmitProposal', + type: isClassic + ? 'gov/MsgSubmitProposal' + : 'cosmos-sdk/MsgSubmitProposal', value: { - content: content.toAmino(), + content: content.toAmino(isClassic), initial_deposit: initial_deposit.toAmino(), proposer, }, }; } - public static fromData(data: MsgSubmitProposal.Data): MsgSubmitProposal { + public static fromData( + data: MsgSubmitProposal.Data, + isClassic?: boolean + ): MsgSubmitProposal { const { content, initial_deposit, proposer } = data; return new MsgSubmitProposal( - Proposal.Content.fromData(content), + Proposal.Content.fromData(content, isClassic), Coins.fromData(initial_deposit), proposer ); } - public toData(): MsgSubmitProposal.Data { + public toData(isClassic?: boolean): MsgSubmitProposal.Data { const { content, initial_deposit, proposer } = this; return { '@type': '/cosmos.gov.v1beta1.MsgSubmitProposal', - content: content.toData(), + content: content.toData(isClassic), initial_deposit: initial_deposit.toData(), proposer, }; } - public static fromProto(proto: MsgSubmitProposal.Proto): MsgSubmitProposal { + public static fromProto( + proto: MsgSubmitProposal.Proto, + isClassic?: boolean + ): MsgSubmitProposal { return new MsgSubmitProposal( - Proposal.Content.fromProto(proto.content as any), + Proposal.Content.fromProto(proto.content as any, isClassic), Coins.fromProto(proto.initialDeposit), proto.proposer ); } - public toProto(): MsgSubmitProposal.Proto { + public toProto(isClassic?: boolean): MsgSubmitProposal.Proto { const { content, initial_deposit, proposer } = this; return MsgSubmitProposal_pb.fromPartial({ - content: content.packAny(), + content: content.packAny(isClassic), initialDeposit: initial_deposit.toProto(), proposer, }); } - public packAny(): Any { + public packAny(isClassic?: boolean): Any { return Any.fromPartial({ typeUrl: '/cosmos.gov.v1beta1.MsgSubmitProposal', - value: MsgSubmitProposal_pb.encode(this.toProto()).finish(), + value: MsgSubmitProposal_pb.encode(this.toProto(isClassic)).finish(), }); } - public static unpackAny(msgAny: Any): MsgSubmitProposal { + public static unpackAny(msgAny: Any, isClassic?: boolean): MsgSubmitProposal { return MsgSubmitProposal.fromProto( - MsgSubmitProposal_pb.decode(msgAny.value) + MsgSubmitProposal_pb.decode(msgAny.value), + isClassic ); } } export namespace MsgSubmitProposal { export interface Amino { - type: 'gov/MsgSubmitProposal'; + type: 'gov/MsgSubmitProposal' | 'cosmos-sdk/MsgSubmitProposal'; value: { content: Proposal.Content.Amino; initial_deposit: Coins.Amino; diff --git a/src/core/gov/msgs/MsgVote.ts b/src/core/gov/msgs/MsgVote.ts index 4ad78e457..127cf396b 100644 --- a/src/core/gov/msgs/MsgVote.ts +++ b/src/core/gov/msgs/MsgVote.ts @@ -26,17 +26,18 @@ export class MsgVote extends JSONSerializable< super(); } - public static fromAmino(data: MsgVote.Amino): MsgVote { + public static fromAmino(data: MsgVote.Amino, _?: boolean): MsgVote { + _; const { value: { proposal_id, voter, option }, } = data; return new MsgVote(Number.parseInt(proposal_id), voter, option); } - public toAmino(): MsgVote.Amino { + public toAmino(isClassic?: boolean): MsgVote.Amino { const { proposal_id, voter, option } = this; return { - type: 'gov/MsgVote', + type: isClassic ? 'gov/MsgVote' : 'cosmos-sdk/MsgVote', value: { proposal_id: proposal_id.toFixed(), voter, @@ -45,12 +46,14 @@ export class MsgVote extends JSONSerializable< }; } - public static fromData(data: MsgVote.Data): MsgVote { + public static fromData(data: MsgVote.Data, _?: boolean): MsgVote { + _; const { proposal_id, voter, option } = data; return new MsgVote(Number.parseInt(proposal_id), voter, option); } - public toData(): MsgVote.Data { + public toData(_?: boolean): MsgVote.Data { + _; const { proposal_id, voter, option } = this; return { '@type': '/cosmos.gov.v1beta1.MsgVote', @@ -60,11 +63,13 @@ export class MsgVote extends JSONSerializable< }; } - public static fromProto(proto: MsgVote.Proto): MsgVote { + public static fromProto(proto: MsgVote.Proto, _?: boolean): MsgVote { + _; return new MsgVote(proto.proposalId.toNumber(), proto.voter, proto.option); } - public toProto(): MsgVote.Proto { + public toProto(_?: boolean): MsgVote.Proto { + _; const { proposal_id, voter, option } = this; return MsgVote_pb.fromPartial({ option, @@ -73,14 +78,16 @@ export class MsgVote extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/cosmos.gov.v1beta1.MsgVote', value: MsgVote_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgVote { + public static unpackAny(msgAny: Any, _?: boolean): MsgVote { + _; return MsgVote.fromProto(MsgVote_pb.decode(msgAny.value)); } } @@ -90,7 +97,7 @@ export namespace MsgVote { export type Option = VoteOption; export interface Amino { - type: 'gov/MsgVote'; + type: 'gov/MsgVote' | 'cosmos-sdk/MsgVote'; value: { proposal_id: string; voter: AccAddress; diff --git a/src/core/gov/msgs/MsgVoteWeighted.ts b/src/core/gov/msgs/MsgVoteWeighted.ts index bec31f21e..c7577e2de 100644 --- a/src/core/gov/msgs/MsgVoteWeighted.ts +++ b/src/core/gov/msgs/MsgVoteWeighted.ts @@ -26,7 +26,11 @@ export class MsgVoteWeighted extends JSONSerializable< super(); } - public static fromAmino(data: MsgVoteWeighted.Amino): MsgVoteWeighted { + public static fromAmino( + data: MsgVoteWeighted.Amino, + _?: boolean + ): MsgVoteWeighted { + _; const { value: { proposal_id, voter, options }, } = data; @@ -37,10 +41,10 @@ export class MsgVoteWeighted extends JSONSerializable< ); } - public toAmino(): MsgVoteWeighted.Amino { + public toAmino(isClassic?: boolean): MsgVoteWeighted.Amino { const { proposal_id, voter, options } = this; return { - type: 'gov/MsgVoteWeighted', + type: isClassic ? 'gov/MsgVoteWeighted' : 'cosmos-sdk/MsgVoteWeighted', value: { proposal_id: proposal_id.toFixed(), voter, @@ -49,7 +53,11 @@ export class MsgVoteWeighted extends JSONSerializable< }; } - public static fromData(data: MsgVoteWeighted.Data): MsgVoteWeighted { + public static fromData( + data: MsgVoteWeighted.Data, + _?: boolean + ): MsgVoteWeighted { + _; const { proposal_id, voter, options } = data; return new MsgVoteWeighted( Number.parseInt(proposal_id), @@ -58,7 +66,8 @@ export class MsgVoteWeighted extends JSONSerializable< ); } - public toData(): MsgVoteWeighted.Data { + public toData(_?: boolean): MsgVoteWeighted.Data { + _; const { proposal_id, voter, options } = this; return { '@type': '/cosmos.gov.v1beta1.MsgVoteWeighted', @@ -68,7 +77,11 @@ export class MsgVoteWeighted extends JSONSerializable< }; } - public static fromProto(proto: MsgVoteWeighted.Proto): MsgVoteWeighted { + public static fromProto( + proto: MsgVoteWeighted.Proto, + _?: boolean + ): MsgVoteWeighted { + _; return new MsgVoteWeighted( proto.proposalId.toNumber(), proto.voter, @@ -76,7 +89,8 @@ export class MsgVoteWeighted extends JSONSerializable< ); } - public toProto(): MsgVoteWeighted.Proto { + public toProto(_?: boolean): MsgVoteWeighted.Proto { + _; const { proposal_id, voter, options } = this; return MsgVoteWeighted_pb.fromPartial({ options: options.map(o => o.toProto()), @@ -85,21 +99,23 @@ export class MsgVoteWeighted extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/cosmos.gov.v1beta1.MsgVoteWeighted', value: MsgVoteWeighted_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgVoteWeighted { + public static unpackAny(msgAny: Any, _?: boolean): MsgVoteWeighted { + _; return MsgVoteWeighted.fromProto(MsgVoteWeighted_pb.decode(msgAny.value)); } } export namespace MsgVoteWeighted { export interface Amino { - type: 'gov/MsgVoteWeighted'; + type: 'gov/MsgVoteWeighted' | 'cosmos-sdk/MsgVoteWeighted'; value: { proposal_id: string; voter: AccAddress; diff --git a/src/core/gov/proposals/TextProposal.ts b/src/core/gov/proposals/TextProposal.ts index a4ac517d5..914704dbf 100644 --- a/src/core/gov/proposals/TextProposal.ts +++ b/src/core/gov/proposals/TextProposal.ts @@ -20,17 +20,18 @@ export class TextProposal extends JSONSerializable< super(); } - public static fromAmino(data: TextProposal.Amino): TextProposal { + public static fromAmino(data: TextProposal.Amino, _?: boolean): TextProposal { + _; const { value: { title, description }, } = data; return new TextProposal(title, description); } - public toAmino(): TextProposal.Amino { + public toAmino(isClassic?: boolean): TextProposal.Amino { const { title, description } = this; return { - type: 'gov/TextProposal', + type: isClassic ? 'gov/TextProposal' : 'cosmos-sdk/TextProposal', value: { title, description, @@ -38,12 +39,14 @@ export class TextProposal extends JSONSerializable< }; } - public static fromData(proto: TextProposal.Data): TextProposal { + public static fromData(proto: TextProposal.Data, _?: boolean): TextProposal { + _; const { title, description } = proto; return new TextProposal(title, description); } - public toData(): TextProposal.Data { + public toData(_?: boolean): TextProposal.Data { + _; const { title, description } = this; return { '@type': '/cosmos.gov.v1beta1.TextProposal', @@ -52,11 +55,16 @@ export class TextProposal extends JSONSerializable< }; } - public static fromProto(proto: TextProposal.Proto): TextProposal { + public static fromProto( + proto: TextProposal.Proto, + _?: boolean + ): TextProposal { + _; return new TextProposal(proto.title, proto.description); } - public toProto(): TextProposal.Proto { + public toProto(_?: boolean): TextProposal.Proto { + _; const { title, description } = this; return TextProposal_pb.fromPartial({ description, @@ -64,21 +72,24 @@ export class TextProposal extends JSONSerializable< }); } - public packAny(): Any { + public packAny(isClassic?: boolean): Any { return Any.fromPartial({ typeUrl: '/cosmos.gov.v1beta1.TextProposal', - value: TextProposal_pb.encode(this.toProto()).finish(), + value: TextProposal_pb.encode(this.toProto(isClassic)).finish(), }); } - public static unpackAny(msgAny: Any): TextProposal { - return TextProposal.fromProto(TextProposal_pb.decode(msgAny.value)); + public static unpackAny(msgAny: Any, isClassic?: boolean): TextProposal { + return TextProposal.fromProto( + TextProposal_pb.decode(msgAny.value), + isClassic + ); } } export namespace TextProposal { export interface Amino { - type: 'gov/TextProposal'; + type: 'gov/TextProposal' | 'cosmos-sdk/TextProposal'; value: { title: string; description: string; diff --git a/src/core/ibc/applications/fee/Fee.ts b/src/core/ibc/applications/fee/Fee.ts new file mode 100644 index 000000000..661827071 --- /dev/null +++ b/src/core/ibc/applications/fee/Fee.ts @@ -0,0 +1,101 @@ +import { Fee as Fee_pb } from '@terra-money/terra.proto/ibc/applications/fee/v1/fee'; +import { Coins } from '../../../Coins' +import { JSONSerializable } from '../../../../util/json'; + +/** + * Fee defines the ICS29 receive, acknowledgement and timeout fees + */ +export class Fee extends JSONSerializable< + Fee.Amino, + Fee.Data, + Fee.Proto +> { + /** the packet receive fee */ + public recv_fee: Coins; + /** the packet acknowledgement fee */ + public ack_fee: Coins; + /** the packet timeout fee */ + public timeout_fee: Coins; + /** + * @param recv_fee the packet receive fee + * @param ack_fee the packet acknowledgement fee + * @param timeout_fee the packet timeout fee + */ + constructor( + recv_fee: Coins.Input, + ack_fee: Coins.Input, + timeout_fee: Coins.Input + ) { + super(); + this.recv_fee = new Coins(recv_fee); + this.ack_fee = new Coins(ack_fee); + this.timeout_fee = new Coins(timeout_fee); + } + + public static fromAmino(data: Fee.Amino): Fee { + const { recv_fee, ack_fee, timeout_fee } = data; + return new Fee( + Coins.fromAmino(recv_fee), + Coins.fromAmino(ack_fee), + Coins.fromAmino(timeout_fee) + ); + } + + public toAmino(): Fee.Amino { + const { recv_fee, ack_fee, timeout_fee } = this; + const res: Fee.Amino = { + recv_fee: recv_fee.toAmino(), + ack_fee: ack_fee.toAmino(), + timeout_fee: timeout_fee.toAmino() + }; + return res; + } + + public static fromData(data: Fee.Data): Fee { + const { recv_fee, ack_fee, timeout_fee } = data; + return new Fee(Coins.fromData(recv_fee), Coins.fromData(ack_fee), Coins.fromData(timeout_fee)); + } + + public toData(): Fee.Data { + const { recv_fee, ack_fee, timeout_fee } = this; + const res: Fee.Data = { + recv_fee: recv_fee.toData(), + ack_fee: ack_fee.toData(), + timeout_fee: timeout_fee.toData() + }; + return res; + } + + public static fromProto(proto: Fee.Proto): Fee { + return new Fee( + Coins.fromProto(proto.recvFee), + Coins.fromProto(proto.ackFee), + Coins.fromProto(proto.timeoutFee), + ); + } + + public toProto(): Fee.Proto { + const { recv_fee, ack_fee, timeout_fee } = this; + return Fee_pb.fromPartial({ + recvFee: recv_fee.toProto(), + ackFee: ack_fee.toProto(), + timeoutFee: timeout_fee.toProto(), + }); + } +} + +export namespace Fee { + export interface Amino { + recv_fee: Coins.Amino; + ack_fee: Coins.Amino; + timeout_fee: Coins.Amino; + } + + export interface Data { + recv_fee: Coins.Data; + ack_fee: Coins.Data; + timeout_fee: Coins.Data; + } + + export type Proto = Fee_pb; +} diff --git a/src/core/ibc/applications/fee/IdentifiedPacketFee.ts b/src/core/ibc/applications/fee/IdentifiedPacketFee.ts new file mode 100644 index 000000000..dfffc7fa2 --- /dev/null +++ b/src/core/ibc/applications/fee/IdentifiedPacketFee.ts @@ -0,0 +1,88 @@ +import { IdentifiedPacketFees as IdentifiedPacketFees_pb } from '@terra-money/terra.proto/ibc/applications/fee/v1/fee'; +import { JSONSerializable } from '../../../../util/json'; +import { PacketFee } from './PacketFee'; +import { PacketId } from 'core/ibc/core/channel/PacketId'; + +/** + * IdentifiedPacketFees contains a list of type PacketFee and associated PacketId + */ +export class IdentifiedPacketFees extends JSONSerializable< + IdentifiedPacketFees.Amino, + IdentifiedPacketFees.Data, + IdentifiedPacketFees.Proto +> { + /** + * @param packet_id unique packet identifier comprised of the channel ID, port ID and sequence + * @param packet_fees list of packet fees + */ + constructor( + public packet_id: PacketId | undefined, + public packet_fees: PacketFee[] = [] + ) { + super(); + } + + public static fromAmino(data: IdentifiedPacketFees.Amino): IdentifiedPacketFees { + const { packet_id, packet_fees } = data; + return new IdentifiedPacketFees( + packet_id ? PacketId.fromAmino(packet_id) : undefined, + packet_fees.map(fee => PacketFee.fromAmino(fee)) + ); + } + + public toAmino(): IdentifiedPacketFees.Amino { + const { packet_id, packet_fees } = this + const res: IdentifiedPacketFees.Amino = { + packet_id: packet_id?.toAmino(), + packet_fees: packet_fees.map(fee => fee.toAmino()) + }; + return res; + } + + public static fromData(data: IdentifiedPacketFees.Data): IdentifiedPacketFees { + const { packet_id, packet_fees } = data; + return new IdentifiedPacketFees( + packet_id ? PacketId.fromData(packet_id) : undefined, + packet_fees.map(fee => PacketFee.fromData(fee)) + ); + } + + public toData(): IdentifiedPacketFees.Data { + const { packet_id, packet_fees } = this + const res: IdentifiedPacketFees.Data = { + packet_id: packet_id?.toData(), + packet_fees: packet_fees.map(fee => fee.toData()) + }; + return res; + } + + public static fromProto(proto: IdentifiedPacketFees.Proto): IdentifiedPacketFees { + return new IdentifiedPacketFees( + proto.packetId ? PacketId.fromProto(proto.packetId) : undefined, + proto.packetFees.map(fee => PacketFee.fromProto(fee)) + ); + } + + public toProto(): IdentifiedPacketFees.Proto { + const { packet_id, packet_fees } = this + const res: IdentifiedPacketFees.Proto = { + packetId: packet_id?.toProto(), + packetFees: packet_fees.map(fee => fee.toProto()) + }; + return res; + } +} + +export namespace IdentifiedPacketFees { + export interface Amino { + packet_id: PacketId.Amino | undefined; + packet_fees: PacketFee.Amino[]; + } + + export interface Data { + packet_id: PacketId.Data | undefined; + packet_fees: PacketFee.Data[]; + } + + export type Proto = IdentifiedPacketFees_pb; +} diff --git a/src/core/ibc/applications/fee/Metadata.ts b/src/core/ibc/applications/fee/Metadata.ts new file mode 100644 index 000000000..02e77462b --- /dev/null +++ b/src/core/ibc/applications/fee/Metadata.ts @@ -0,0 +1,83 @@ +import { Metadata as Metadata_pb } from '@terra-money/terra.proto/ibc/applications/fee/v1/metadata'; +import { JSONSerializable } from '../../../../util/json'; + +/** + * Metadata defines the ICS29 channel specific metadata encoded into the channel version bytestring + * See ICS004: https://github.com/cosmos/ibc/tree/master/spec/core/ics-004-channel-and-packet-semantics#Versioning + */ +export class Metadata extends JSONSerializable< + Metadata.Amino, + Metadata.Data, + Metadata.Proto +> { + /** + * @param fee_version fee_version defines the ICS29 fee version + * @param app_version app_version defines the underlying application version, which may or may not be a JSON encoded bytestring + */ + constructor( + public fee_version: string, + public app_version: string, + ) { + super(); + } + + public static fromAmino(data: Metadata.Amino): Metadata { + const { fee_version, app_version } = data; + return new Metadata(fee_version, app_version); + } + + public toAmino(): Metadata.Amino { + const { fee_version, app_version } = this; + const res: Metadata.Amino = { + fee_version, + app_version, + }; + return res; + } + + public static fromData(data: Metadata.Data): Metadata { + const { fee_version, app_version } = data; + return new Metadata( + fee_version, + app_version, + ); + } + + public toData(): Metadata.Data { + const { fee_version, app_version } = this; + const res: Metadata.Data = { + fee_version, + app_version, + }; + return res; + } + + public static fromProto(proto: Metadata.Proto): Metadata { + return new Metadata( + proto.feeVersion, + proto.appVersion, + ); + } + + public toProto(): Metadata.Proto { + const { fee_version, app_version } = this; + return Metadata_pb.fromPartial({ + feeVersion: fee_version, + appVersion: app_version, + }); + } +} + +export namespace Metadata { + export interface Amino { + fee_version: string; + app_version: string; + } + + export interface Data { + fee_version: string; + app_version: string; + } + + export type Proto = Metadata_pb; +} diff --git a/src/core/ibc/applications/fee/PacketFee.ts b/src/core/ibc/applications/fee/PacketFee.ts new file mode 100644 index 000000000..c6d4d1221 --- /dev/null +++ b/src/core/ibc/applications/fee/PacketFee.ts @@ -0,0 +1,97 @@ +import { PacketFee as PacketFee_pb } from '@terra-money/terra.proto/ibc/applications/fee/v1/fee'; +import { JSONSerializable } from '../../../../util/json'; +import { Fee } from './Fee'; +import { AccAddress } from '../../../..'; + +/** + * PacketFee contains ICS29 relayer fees, refund address and optional list of permitted relayers + */ +export class PacketFee extends JSONSerializable< + PacketFee.Amino, + PacketFee.Data, + PacketFee.Proto +> { + /** + * @param fee fee encapsulates the recv, ack and timeout fees associated with an IBC packet + * @param refund_address the refund address for unspent fees + * @param relayers optional list of relayers permitted to receive fees + */ + constructor( + public fee: Fee | undefined, + public refund_address: AccAddress, + public relayers: string[] = [] + ) { + super(); + } + + public static fromAmino(data: PacketFee.Amino): PacketFee { + const { fee, refund_address, relayers } = data; + return new PacketFee( + fee ? Fee.fromAmino(fee) : undefined, + refund_address, + relayers + ); + } + + public toAmino(): PacketFee.Amino { + const { fee, refund_address, relayers } = this; + const res: PacketFee.Amino = { + fee: fee?.toAmino(), + refund_address, + relayers + }; + return res; + } + + public static fromData(data: PacketFee.Data): PacketFee { + const { fee, refund_address, relayers } = data; + return new PacketFee( + fee ? Fee.fromData(fee) : undefined, + refund_address, + relayers + ); + } + + public toData(): PacketFee.Data { + const { fee, refund_address, relayers } = this; + const res: PacketFee.Data = { + fee: fee?.toData(), + refund_address, + relayers + }; + return res; + } + + public static fromProto(proto: PacketFee.Proto): PacketFee { + return new PacketFee( + proto.fee ? Fee.fromProto(proto.fee) : undefined, + proto.refundAddress, + proto.relayers + ); + } + + public toProto(): PacketFee.Proto { + const { fee, refund_address, relayers } = this; + return PacketFee_pb.fromPartial({ + fee: fee?.toProto(), + refundAddress: refund_address, + relayers: relayers + }); + } +} + +export namespace PacketFee { + export interface Amino { + fee: Fee.Amino | undefined; + refund_address: AccAddress; + relayers: string[]; + } + + export interface Data { + fee: Fee.Data | undefined; + refund_address: AccAddress; + relayers: string[]; + } + + export type Proto = PacketFee_pb; +} diff --git a/src/core/ibc/applications/fee/index.ts b/src/core/ibc/applications/fee/index.ts new file mode 100644 index 000000000..bc97511cd --- /dev/null +++ b/src/core/ibc/applications/fee/index.ts @@ -0,0 +1,7 @@ +export * from './Metadata'; +export * from './IdentifiedPacketFee' +export * from './PacketFee'; +export * from './Fee'; +export * from './msgs/MsgPayPacketFee'; +export * from './msgs/MsgPayPacketFeeAsync'; +export * from './msgs/MsgRegisterCounterpartAddress'; \ No newline at end of file diff --git a/src/core/ibc/applications/fee/msgs/MsgPayPacketFee.ts b/src/core/ibc/applications/fee/msgs/MsgPayPacketFee.ts new file mode 100644 index 000000000..fc177b6bb --- /dev/null +++ b/src/core/ibc/applications/fee/msgs/MsgPayPacketFee.ts @@ -0,0 +1,142 @@ +import { JSONSerializable } from '../../../../../util/json'; +import { Any } from '@terra-money/terra.proto/google/protobuf/any'; +import { MsgPayPacketFee as MsgPayPacketFee_pb } from '@terra-money/terra.proto/ibc/applications/fee/v1/tx'; +import { Fee } from '../Fee'; + +/** + * MsgPayPacketFee defines the request type for the PayPacketFee rpc + * This Msg can be used to pay for a packet at the next sequence send & should be combined with the Msg that will be paid for + */ +export class MsgPayPacketFee extends JSONSerializable< + any, + MsgPayPacketFee.Data, + MsgPayPacketFee.Proto +> { + /** + * @param fee encapsulates the recv, ack and timeout fees associated with an IBC packet + * @param source_port_id the source port unique identifier + * @param source_channel_id the source channel unique identifer + * @param signer account address to refund fee if necessary + * @param relayers optional list of relayers permitted to the receive packet fees + */ + constructor( + public fee: Fee | undefined, + public source_port_id: string, + public source_channel_id: string, + public signer: string, + public relayers: string[] + ) { + super(); + } + + public static fromAmino(_: any, isClassic?: boolean): MsgPayPacketFee { + if (isClassic) { + throw new Error('Net supported for the network'); + } + _; + throw new Error('Amino not supported'); + } + + public toAmino(isClassic?: boolean): any { + if (isClassic) { + throw new Error('Net supported for the network'); + } + throw new Error('Amino not supported'); + } + + public static fromData( + data: MsgPayPacketFee.Data, + isClassic?: boolean + ): MsgPayPacketFee { + if (isClassic) { + throw new Error('Net supported for the network'); + } + const { fee, source_port_id, source_channel_id, signer, relayers } = data; + + return new MsgPayPacketFee( + fee ? Fee.fromData(fee) : undefined, + source_port_id, + source_channel_id, + signer, + relayers + ); + } + + public toData(isClassic?: boolean): MsgPayPacketFee.Data { + if (isClassic) { + throw new Error('Net supported for the network'); + } + const { fee, source_port_id, source_channel_id, signer, relayers } = this; + return { + '@type': '/ibc.applications.fee.v1.MsgPayPacketFee', + fee: fee?.toData(), + source_port_id, + source_channel_id, + signer, + relayers, + }; + } + + public static fromProto( + proto: MsgPayPacketFee.Proto, + isClassic?: boolean + ): MsgPayPacketFee { + if (isClassic) { + throw new Error('Net supported for the network'); + } + return new MsgPayPacketFee( + proto.fee ? Fee.fromProto(proto.fee) : undefined, + proto.sourcePortId, + proto.sourceChannelId, + proto.signer, + proto.relayers + ); + } + + public toProto(isClassic?: boolean): MsgPayPacketFee.Proto { + if (isClassic) { + throw new Error('Net supported for the network'); + } + const { fee, source_port_id, source_channel_id, signer, relayers } = this; + return MsgPayPacketFee_pb.fromPartial({ + fee: fee?.toProto(), + sourcePortId: source_port_id, + sourceChannelId: source_channel_id, + signer, + relayers, + }); + } + + public packAny(isClassic?: boolean): Any { + if (isClassic) { + throw new Error('Net supported for the network'); + } + return Any.fromPartial({ + typeUrl: '/ibc.applications.fee.v1.MsgPayPacketFee', + value: MsgPayPacketFee_pb.encode(this.toProto(isClassic)).finish(), + }); + } + + public static unpackAny(msgAny: Any, isClassic?: boolean): MsgPayPacketFee { + if (isClassic) { + throw new Error('Net supported for the network'); + } + return MsgPayPacketFee.fromProto( + MsgPayPacketFee_pb.decode(msgAny.value), + isClassic + ); + } +} + +export namespace MsgPayPacketFee { + export interface Data { + '@type': '/ibc.applications.fee.v1.MsgPayPacketFee'; + fee?: Fee.Data; + source_port_id: string; + source_channel_id: string; + signer: string; + relayers: string[]; + } + + export type Proto = MsgPayPacketFee_pb; +} diff --git a/src/core/ibc/applications/fee/msgs/MsgPayPacketFeeAsync.ts b/src/core/ibc/applications/fee/msgs/MsgPayPacketFeeAsync.ts new file mode 100644 index 000000000..47f9fe5bc --- /dev/null +++ b/src/core/ibc/applications/fee/msgs/MsgPayPacketFeeAsync.ts @@ -0,0 +1,123 @@ +import { JSONSerializable } from '../../../../../util/json'; +import { Any } from '@terra-money/terra.proto/google/protobuf/any'; +import { MsgPayPacketFeeAsync as MsgPayPacketFeeAsync_pb } from '@terra-money/terra.proto/ibc/applications/fee/v1/tx'; +import { PacketId } from 'core/ibc/core/channel/PacketId'; +import { PacketFee } from '../PacketFee'; + +/** + * MsgPayPacketFeeAsync defines the request type for the PayPacketFeeAsync rpc + * This Msg can be used to pay for a packet at a specified sequence (instead of the next sequence send) + */ +export class MsgPayPacketFeeAsync extends JSONSerializable< + any, + MsgPayPacketFeeAsync.Data, + MsgPayPacketFeeAsync.Proto +> { + /** + * @param packet_id packet identifier comprised of the channel ID, port ID and sequence + * @param packet_fee the packet fee associated with a particular IBC packet + */ + constructor(public packet_id?: PacketId, public packet_fee?: PacketFee) { + super(); + } + + public static fromAmino(_: any, isClassic?: boolean): any { + if (isClassic) { + throw new Error('Net supported for the network'); + } + _; + throw new Error('Amino not supported'); + } + + public toAmino(isClassic?: boolean): any { + if (isClassic) { + throw new Error('Net supported for the network'); + } + throw new Error('Amino not supported'); + } + + public static fromData( + data: MsgPayPacketFeeAsync.Data, + isClassic?: boolean + ): MsgPayPacketFeeAsync { + if (isClassic) { + throw new Error('Net supported for the network'); + } + const { packet_id, packet_fee } = data; + + return new MsgPayPacketFeeAsync( + packet_id ? PacketId.fromData(packet_id) : undefined, + packet_fee ? PacketFee.fromData(packet_fee) : undefined + ); + } + + public toData(isClassic?: boolean): MsgPayPacketFeeAsync.Data { + if (isClassic) { + throw new Error('Net supported for the network'); + } + const { packet_id, packet_fee } = this; + return { + '@type': '/ibc.applications.fee.v1.MsgPayPacketFeeAsync', + packet_id: packet_id?.toData(), + packet_fee: packet_fee?.toData(), + }; + } + + public static fromProto( + proto: MsgPayPacketFeeAsync.Proto, + isClassic?: boolean + ): MsgPayPacketFeeAsync { + if (isClassic) { + throw new Error('Net supported for the network'); + } + return new MsgPayPacketFeeAsync( + proto.packetId ? PacketId.fromProto(proto.packetId) : undefined, + proto.packetFee ? PacketFee.fromProto(proto.packetFee) : undefined + ); + } + + public toProto(isClassic?: boolean): MsgPayPacketFeeAsync.Proto { + if (isClassic) { + throw new Error('Net supported for the network'); + } + + const { packet_id, packet_fee } = this; + return MsgPayPacketFeeAsync_pb.fromPartial({ + packetId: packet_id?.toProto(), + packetFee: packet_fee?.toProto(), + }); + } + + public packAny(isClassic?: boolean): Any { + if (isClassic) { + throw new Error('Net supported for the network'); + } + return Any.fromPartial({ + typeUrl: '/ibc.applications.fee.v1.MsgPayPacketFeeAsync', + value: MsgPayPacketFeeAsync_pb.encode(this.toProto(isClassic)).finish(), + }); + } + + public static unpackAny( + msgAny: Any, + isClassic?: boolean + ): MsgPayPacketFeeAsync { + if (isClassic) { + throw new Error('Net supported for the network'); + } + return MsgPayPacketFeeAsync.fromProto( + MsgPayPacketFeeAsync_pb.decode(msgAny.value), + isClassic + ); + } +} + +export namespace MsgPayPacketFeeAsync { + export interface Data { + '@type': '/ibc.applications.fee.v1.MsgPayPacketFeeAsync'; + packet_id?: PacketId.Data; + packet_fee?: PacketFee.Data; + } + + export type Proto = MsgPayPacketFeeAsync_pb; +} diff --git a/src/core/ibc/applications/fee/msgs/MsgRegisterCounterpartAddress.ts b/src/core/ibc/applications/fee/msgs/MsgRegisterCounterpartAddress.ts new file mode 100644 index 000000000..4825bea35 --- /dev/null +++ b/src/core/ibc/applications/fee/msgs/MsgRegisterCounterpartAddress.ts @@ -0,0 +1,133 @@ +import { JSONSerializable } from '../../../../../util/json'; +import { Any } from '@terra-money/terra.proto/google/protobuf/any'; +import { MsgRegisterCounterpartyAddress as MsgRegisterCounterpartyAddress_pb } from '@terra-money/terra.proto/ibc/applications/fee/v1/tx'; + +/** + * MsgRegisterCounterpartyAddress defines the request type for the RegisterCounterpartyAddress rpc + */ +export class MsgRegisterCounterpartyAddress extends JSONSerializable< + any, + MsgRegisterCounterpartyAddress.Data, + MsgRegisterCounterpartyAddress.Proto +> { + /** + * @param address the relayer address + * @param counterparty_adress the counterparty relayer address + * @param channel_id unique channel identifier + */ + constructor( + public address: string, + public counterparty_address: string, + public channel_id: string + ) { + super(); + } + + public static fromAmino( + _: any, + isClassic?: boolean + ): MsgRegisterCounterpartyAddress { + if (isClassic) { + throw new Error('Net supported for the network'); + } + _; + throw new Error('Amino not supported'); + } + + public toAmino(isClassic?: boolean): any { + if (isClassic) { + throw new Error('Net supported for the network'); + } + throw new Error('Amino not supported'); + } + + public static fromData( + data: MsgRegisterCounterpartyAddress.Data, + isClassic?: boolean + ): MsgRegisterCounterpartyAddress { + if (isClassic) { + throw new Error('Net supported for the network'); + } + const { address, counterparty_address, channel_id } = data; + + return new MsgRegisterCounterpartyAddress( + address, + counterparty_address, + channel_id + ); + } + + public toData(isClassic?: boolean): MsgRegisterCounterpartyAddress.Data { + if (isClassic) { + throw new Error('Net supported for the network'); + } + const { address, counterparty_address, channel_id } = this; + return { + '@type': '/ibc.applications.fee.v1.MsgRegisterCounterpartyAddress', + address, + counterparty_address, + channel_id, + }; + } + + public static fromProto( + proto: MsgRegisterCounterpartyAddress.Proto, + isClassic?: boolean + ): MsgRegisterCounterpartyAddress { + if (isClassic) { + throw new Error('Net supported for the network'); + } + return new MsgRegisterCounterpartyAddress( + proto.address, + proto.counterpartyAddress, + proto.channelId + ); + } + + public toProto(isClassic?: boolean): MsgRegisterCounterpartyAddress.Proto { + if (isClassic) { + throw new Error('Net supported for the network'); + } + const { address, counterparty_address, channel_id } = this; + return MsgRegisterCounterpartyAddress_pb.fromPartial({ + address, + counterpartyAddress: counterparty_address, + channelId: channel_id, + }); + } + + public packAny(isClassic?: boolean): Any { + if (isClassic) { + throw new Error('Net supported for the network'); + } + return Any.fromPartial({ + typeUrl: '/ibc.applications.fee.v1.MsgRegisterCounterpartyAddress', + value: MsgRegisterCounterpartyAddress_pb.encode( + this.toProto(isClassic) + ).finish(), + }); + } + + public static unpackAny( + msgAny: Any, + isClassic?: boolean + ): MsgRegisterCounterpartyAddress { + if (isClassic) { + throw new Error('Net supported for the network'); + } + return MsgRegisterCounterpartyAddress.fromProto( + MsgRegisterCounterpartyAddress_pb.decode(msgAny.value) + ); + } +} + +export namespace MsgRegisterCounterpartyAddress { + export interface Data { + '@type': '/ibc.applications.fee.v1.MsgRegisterCounterpartyAddress'; + address: string; + counterparty_address: string; + channel_id: string; + } + + export type Proto = MsgRegisterCounterpartyAddress_pb; +} diff --git a/src/core/ibc/applications/interchain-account/Account.ts b/src/core/ibc/applications/interchain-account/Account.ts new file mode 100644 index 000000000..601caf142 --- /dev/null +++ b/src/core/ibc/applications/interchain-account/Account.ts @@ -0,0 +1,86 @@ +import { InterchainAccount as InterchainAccount_pb } from '@terra-money/terra.proto/ibc/applications/interchain_accounts/v1/account'; +import { BaseAccount } from '../../../..'; +import { JSONSerializable } from '../../../../util/json'; + +/** + * An InterchainAccount is defined as a BaseAccount & the address of the account owner on the controller chain + */ +export class InterchainAccount extends JSONSerializable< + InterchainAccount.Amino, + InterchainAccount.Data, + InterchainAccount.Proto +> { + /** + * @param base_account + * @param account_owner + */ + constructor( + public base_account: BaseAccount | undefined, + public account_owner: string, + ) { + super(); + } + + public static fromAmino(data: InterchainAccount.Amino): InterchainAccount { + const { base_account, account_owner } = data; + return new InterchainAccount( + base_account ? BaseAccount.fromAmino(base_account) : undefined, + account_owner + ); + } + + public toAmino(): InterchainAccount.Amino { + const { base_account, account_owner } = this; + const res: InterchainAccount.Amino = { + base_account: base_account?.toAmino(), + account_owner, + }; + return res; + } + + public static fromData(data: InterchainAccount.Data): InterchainAccount { + const { base_account, account_owner } = data; + return new InterchainAccount( + base_account ? BaseAccount.fromData(base_account) : undefined, + account_owner, + ); + } + + public toData(): InterchainAccount.Data { + const { base_account, account_owner } = this; + const res: InterchainAccount.Data = { + base_account: base_account?.toData(), + account_owner, + }; + return res; + } + + public static fromProto(proto: InterchainAccount.Proto): InterchainAccount { + return new InterchainAccount( + proto.baseAccount ? BaseAccount.fromProto(proto.baseAccount) : undefined, + proto.accountOwner, + ); + } + + public toProto(): InterchainAccount.Proto { + const { base_account, account_owner } = this; + return InterchainAccount_pb.fromPartial({ + baseAccount: base_account?.toProto(), + accountOwner: account_owner, + }); + } +} + +export namespace InterchainAccount { + export interface Amino { + base_account?: BaseAccount.Amino; + account_owner: string; + } + + export interface Data { + base_account?: BaseAccount.Data; + account_owner: string; + } + + export type Proto = InterchainAccount_pb; +} diff --git a/src/core/ibc/applications/interchain-account/Metadata.ts b/src/core/ibc/applications/interchain-account/Metadata.ts new file mode 100644 index 000000000..e53cfa7ae --- /dev/null +++ b/src/core/ibc/applications/interchain-account/Metadata.ts @@ -0,0 +1,119 @@ +import { Metadata as Metadata_pb } from '@terra-money/terra.proto/ibc/applications/interchain_accounts/v1/metadata'; +import { JSONSerializable } from '../../../../util/json'; + +/** + * Metadata defines a set of protocol specific data encoded into the ICS27 channel version bytestring + * See ICS004: https://github.com/cosmos/ibc/tree/master/spec/core/ics-004-channel-and-packet-semantics#Versioning + */ +export class Metadata extends JSONSerializable< + Metadata.Amino, + Metadata.Data, + Metadata.Proto +> { + /** + * @param version defines the ICS27 protocol version + * @param controller_connection_id is the connection identifier associated with the controller chain + * @param host_connection_id is the connection identifier associated with the host chain + * @param address defines the interchain account address to be fulfilled upon the OnChanOpenTry handshake step ( NOTE: the address field is empty on the OnChanOpenInit handshake step) + * @param encoding defines the supported codec format + * @param tx_type defines the type of transactions the interchain account can execute + */ + constructor( + public version: string, + public controller_connection_id: string, + public host_connection_id: string, + public address: string, + public encoding: string, + public tx_type: string, + ) { + super(); + } + + public static fromAmino(data: Metadata.Amino): Metadata { + const { version, controller_connection_id, host_connection_id, address, encoding, tx_type } = data; + return new Metadata(version, controller_connection_id, host_connection_id, address, encoding, tx_type); + } + + public toAmino(): Metadata.Amino { + const { version, controller_connection_id, host_connection_id, address, encoding, tx_type } = this; + const res: Metadata.Amino = { + version, + controller_connection_id, + host_connection_id, + address, + encoding, + tx_type + }; + return res; + } + + public static fromData(data: Metadata.Data): Metadata { + const { version, controller_connection_id, host_connection_id, address, encoding, tx_type } = data; + return new Metadata( + version, + controller_connection_id, + host_connection_id, + address, + encoding, + tx_type + ); + } + + public toData(): Metadata.Data { + const { version, controller_connection_id, host_connection_id, address, encoding, tx_type } = this; + const res: Metadata.Data = { + version, + controller_connection_id, + host_connection_id, + address, + encoding, + tx_type + }; + return res; + } + + public static fromProto(proto: Metadata.Proto): Metadata { + return new Metadata( + proto.version, + proto.controllerConnectionId, + proto.hostConnectionId, + proto.address, + proto.encoding, + proto.txType, + ); + } + + public toProto(): Metadata.Proto { + const { version, controller_connection_id, host_connection_id, address, encoding, tx_type } = this; + return Metadata_pb.fromPartial({ + version: version, + controllerConnectionId: controller_connection_id, + hostConnectionId: host_connection_id, + address: address, + encoding: encoding, + txType: tx_type, + }); + } +} + +export namespace Metadata { + export interface Amino { + version: string; + controller_connection_id: string; + host_connection_id: string; + address: string; + encoding: string; + tx_type: string; + } + + export interface Data { + version: string; + controller_connection_id: string; + host_connection_id: string; + address: string; + encoding: string; + tx_type: string; + } + + export type Proto = Metadata_pb; +} diff --git a/src/core/ibc/applications/interchain-account/controller/Params.ts b/src/core/ibc/applications/interchain-account/controller/Params.ts new file mode 100644 index 000000000..ebb560f04 --- /dev/null +++ b/src/core/ibc/applications/interchain-account/controller/Params.ts @@ -0,0 +1,68 @@ +import { Params as Params_pb } from '@terra-money/terra.proto/ibc/applications/interchain_accounts/controller/v1/controller'; +import { JSONSerializable } from '../../../../../util/json'; + +/** + * Params defines the set of on-chain interchain accounts parameters. + * The following parameters may be used to disable the controller submodule. + */ +export class Params extends JSONSerializable< + Params.Amino, + Params.Data, + Params.Proto +> { + /** + * @param controller_enabled controller_enabled enables or disables the controller submodule + */ + constructor(public controller_enabled: boolean) { + super(); + } + + public static fromAmino(data: Params.Amino): Params { + const { controller_enabled } = data; + return new Params(controller_enabled); + } + + public toAmino(): Params.Amino { + const { controller_enabled } = this; + const res: Params.Amino = { + controller_enabled: controller_enabled, + }; + return res; + } + + public static fromData(data: Params.Data): Params { + const { controller_enabled } = data; + return new Params(controller_enabled); + } + + public toData(): Params.Data { + const { controller_enabled } = this; + const res: Params.Data = { + controller_enabled, + }; + return res; + } + + public static fromProto(proto: Params.Proto): Params { + return new Params(proto.controllerEnabled); + } + + public toProto(): Params.Proto { + const { controller_enabled } = this; + return Params_pb.fromPartial({ + controllerEnabled: controller_enabled, + }); + } +} + +export namespace Params { + export interface Amino { + controller_enabled: boolean; + } + + export interface Data { + controller_enabled: boolean; + } + + export type Proto = Params_pb; +} diff --git a/src/core/ibc/applications/interchain-account/host/Params.ts b/src/core/ibc/applications/interchain-account/host/Params.ts new file mode 100644 index 000000000..6459af696 --- /dev/null +++ b/src/core/ibc/applications/interchain-account/host/Params.ts @@ -0,0 +1,73 @@ +import { Params as Params_pb } from '@terra-money/terra.proto/ibc/applications/interchain_accounts/host/v1/host'; +import { JSONSerializable } from '../../../../../util/json'; + +/** + * Params defines the set of on-chain interchain accounts parameters. + * The following parameters may be used to disable the host submodule. + */ +export class Params extends JSONSerializable< + Params.Amino, + Params.Data, + Params.Proto +> { + /** + * @param host_enabled host_enabled enables or disables the host submodule. + */ + constructor(public host_enabled: boolean, public allowed_messages: string[]) { + super(); + } + + public static fromAmino(data: Params.Amino): Params { + const { host_enabled, allowed_messages } = data; + return new Params(host_enabled, allowed_messages); + } + + public toAmino(): Params.Amino { + const { host_enabled, allowed_messages } = this; + const res: Params.Amino = { + host_enabled: host_enabled, + allowed_messages: allowed_messages, + }; + return res; + } + + public static fromData(data: Params.Data): Params { + const { host_enabled, allowed_messages } = data; + return new Params(host_enabled, allowed_messages); + } + + public toData(): Params.Data { + const { host_enabled, allowed_messages } = this; + const res: Params.Data = { + host_enabled, + allowed_messages, + }; + return res; + } + + public static fromProto(proto: Params.Proto): Params { + return new Params(proto.hostEnabled, proto.allowMessages); + } + + public toProto(): Params.Proto { + const { host_enabled, allowed_messages } = this; + return Params_pb.fromPartial({ + hostEnabled: host_enabled, + allowMessages: allowed_messages, + }); + } +} + +export namespace Params { + export interface Amino { + host_enabled: boolean; + allowed_messages: string[]; + } + + export interface Data { + host_enabled: boolean; + allowed_messages: string[]; + } + + export type Proto = Params_pb; +} diff --git a/src/core/ibc/applications/interchain-account/index.ts b/src/core/ibc/applications/interchain-account/index.ts new file mode 100644 index 000000000..8887d4ea1 --- /dev/null +++ b/src/core/ibc/applications/interchain-account/index.ts @@ -0,0 +1,5 @@ +export { Params as ControllerParams } from './controller/Params'; +export { Params as HostParams } from './host/Params'; + +export * from './Account'; +export * from './Metadata'; \ No newline at end of file diff --git a/src/core/ibc/applications/transfer/index.ts b/src/core/ibc/applications/transfer/index.ts new file mode 100644 index 000000000..98c077810 --- /dev/null +++ b/src/core/ibc/applications/transfer/index.ts @@ -0,0 +1,11 @@ +import { MsgTransfer } from './v1/msgs/MsgTransfer'; + +export * from './v1/msgs/MsgTransfer'; +export * from './v2/FungibleTokenPacketData'; + +export type IbcTransferMsg = MsgTransfer; +export namespace IbcTransferMsg { + export type Data = MsgTransfer.Data; + export type Amino = MsgTransfer.Amino; + export type Proto = MsgTransfer.Proto; +} diff --git a/src/core/ibc/applications/transfer/v1/DenomTrace.ts b/src/core/ibc/applications/transfer/v1/DenomTrace.ts new file mode 100644 index 000000000..68ff2aea0 --- /dev/null +++ b/src/core/ibc/applications/transfer/v1/DenomTrace.ts @@ -0,0 +1,79 @@ +import { DenomTrace as DenomTrace_pb } from '@terra-money/legacy.proto/ibc/applications/transfer/v1/transfer'; +import { JSONSerializable } from '../../../../../util/json'; + +/** + * DenomTrace is a monotonically increasing data type + * that can be compared against another DenomTrace for the purposes of updating and + * freezing clients + * + * Normally the RevisionDenomTrace is incremented at each height while keeping + * RevisionNumber the same. However some consensus algorithms may choose to + * reset the height in certain conditions e.g. hard forks, state-machine + * breaking changes In these cases, the RevisionNumber is incremented so that + * height continues to be monitonically increasing even as the RevisionDenomTrace + * gets reset + */ +export class DenomTrace extends JSONSerializable< + DenomTrace.Amino, + DenomTrace.Data, + DenomTrace.Proto +> { + /** + * @param path the revision that the client is currently on + * @param base_denom the height within the given revision + */ + constructor(public path: string, public base_denom: string) { + super(); + } + + public static fromAmino(data: DenomTrace.Amino): DenomTrace { + const { path, base_denom } = data; + return new DenomTrace(path, base_denom); + } + + public toAmino(): DenomTrace.Amino { + const { path, base_denom } = this; + const res: DenomTrace.Amino = { + path, + base_denom, + }; + return res; + } + + public static fromData(data: DenomTrace.Data): DenomTrace { + const { path, base_denom } = data; + return new DenomTrace(path, base_denom); + } + + public toData(): DenomTrace.Data { + const { path, base_denom } = this; + const res: DenomTrace.Data = { + path, + base_denom, + }; + return res; + } + + public static fromProto(proto: DenomTrace.Proto): DenomTrace { + return new DenomTrace(proto.path, proto.baseDenom); + } + + public toProto(): DenomTrace.Proto { + const { path, base_denom } = this; + return DenomTrace_pb.fromPartial({ path, baseDenom: base_denom }); + } +} + +export namespace DenomTrace { + export interface Amino { + path: string; + base_denom: string; + } + + export interface Data { + path: string; + base_denom: string; + } + + export type Proto = DenomTrace_pb; +} diff --git a/src/core/ibc/applications/transfer/v1/msgs/MsgTransfer.spec.ts b/src/core/ibc/applications/transfer/v1/msgs/MsgTransfer.spec.ts new file mode 100644 index 000000000..5b0c6f290 --- /dev/null +++ b/src/core/ibc/applications/transfer/v1/msgs/MsgTransfer.spec.ts @@ -0,0 +1,96 @@ +import { MsgTransfer } from './MsgTransfer'; +import { Coin } from '../../../../../Coin'; +import { Height } from '../../../../msgs/client/Height'; +import { Numeric } from '../../../../..'; + +describe('MsgTransfer', () => { + it('deserializes correctly', () => { + const send = MsgTransfer.fromData({ + '@type': '/ibc.applications.transfer.v1.MsgTransfer', + source_port: 'sourceport-01', + source_channel: 'sourcehannel-01', + token: { denom: 'uluna', amount: '1024' }, + sender: 'terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v', + receiver: 'recvr17lmam6zguazs5q5u6z5mmx76uj63gldnse2pdp', + timeout_height: { + revision_number: '0', + revision_height: '0', + }, + timeout_timestamp: '1642663176848000000', + }, true); + + expect(send).toMatchObject({ + source_port: 'sourceport-01', + source_channel: 'sourcehannel-01', + token: new Coin('uluna', '1024'), + sender: 'terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v', + receiver: 'recvr17lmam6zguazs5q5u6z5mmx76uj63gldnse2pdp', + timeout_height: { + revision_number: 0, + revision_height: 0, + }, + timeout_timestamp: Numeric.parse('1642663176848000000'), + }); + }); + + it('deserializes amino without timeout_height', () => { + const send = MsgTransfer.fromData({ + '@type': '/ibc.applications.transfer.v1.MsgTransfer', + source_port: 'sourceport-01', + source_channel: 'sourcehannel-01', + token: { denom: 'uluna', amount: '1024' }, + sender: 'terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v', + receiver: 'recvr17lmam6zguazs5q5u6z5mmx76uj63gldnse2pdp', + timeout_height: new Height(0, 0).toData(), + timeout_timestamp: '1642663176848000000', + }); + const aminoSend = send.toAmino(); + + expect(aminoSend).toMatchObject({ + type: 'cosmos-sdk/MsgTransfer', + value: { + source_port: 'sourceport-01', + source_channel: 'sourcehannel-01', + token: new Coin('uluna', '1024').toAmino(), + sender: 'terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v', + receiver: 'recvr17lmam6zguazs5q5u6z5mmx76uj63gldnse2pdp', + timeout_height: {}, + timeout_timestamp: '1642663176848000000', + }, + }); + + expect(send.toData()).toMatchObject({}); + }); + + it('deserializes amino without timeout_timestamp', () => { + const send = MsgTransfer.fromData({ + '@type': '/ibc.applications.transfer.v1.MsgTransfer', + source_port: 'sourceport-01', + source_channel: 'sourcehannel-01', + token: { denom: 'uluna', amount: '1024' }, + sender: 'terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v', + receiver: 'recvr17lmam6zguazs5q5u6z5mmx76uj63gldnse2pdp', + timeout_height: { + revision_number: '5', + revision_height: '57240001', + }, + timeout_timestamp: '0', + }); + const aminoSend = send.toAmino(); + + expect(aminoSend).toMatchObject({ + type: 'cosmos-sdk/MsgTransfer', + value: { + source_port: 'sourceport-01', + source_channel: 'sourcehannel-01', + token: new Coin('uluna', '1024').toAmino(), + sender: 'terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v', + receiver: 'recvr17lmam6zguazs5q5u6z5mmx76uj63gldnse2pdp', + timeout_height: new Height(5, 57240001).toAmino(), + timeout_timestamp: undefined, + }, + }); + + expect(send.toData()).toMatchObject({}); + }); +}); diff --git a/src/core/ibc/applications/transfer/v1/msgs/MsgTransfer.ts b/src/core/ibc/applications/transfer/v1/msgs/MsgTransfer.ts new file mode 100644 index 000000000..49512c0b1 --- /dev/null +++ b/src/core/ibc/applications/transfer/v1/msgs/MsgTransfer.ts @@ -0,0 +1,242 @@ +import { JSONSerializable } from '../../../../../../util/json'; +import { AccAddress } from '../../../../../bech32'; +import { Coin } from '../../../../../Coin'; +import * as Long from 'long'; +import { Any } from '@terra-money/terra.proto/google/protobuf/any'; +import { MsgTransfer as MsgTransfer_pb } from '@terra-money/terra.proto/ibc/applications/transfer/v1/tx'; +import { Height } from '../../../../msgs/client/Height'; +import { Numeric } from '../../../../../numeric'; +/** + * A basic message for transfer [[Coin]] via IBC. + */ +export class MsgTransfer extends JSONSerializable< + MsgTransfer.Amino, + MsgTransfer.Data, + MsgTransfer.Proto +> { + public source_port: string; + public source_channel: string; + public token?: Coin; + public sender: AccAddress; + public receiver: string; // destination chain can be non-cosmos-based + public timeout_height?: Height; // 0 to disable + public timeout_timestamp?: Numeric.Output; // 0 to disable + /** + * @param source_port the port on which the packet will be sent + * @param source_channel the channel by which the packet will be sent + * @param token the tokens to be transferred + * @param sender the sender address + * @param receiver the recipient address on the destination chain + * @param timeout_height Timeout height relative to the current block height. (0 to disable) + * @param timeout_timestamp Timeout timestamp (in nanoseconds) relative to the current block timestamp. (0 to disable) + */ + constructor( + source_port: string, + source_channel: string, + token: Coin | undefined, + sender: AccAddress, + receiver: string, + timeout_height: Height | undefined, + timeout_timestamp: Numeric.Input | undefined + ) { + super(); + + if (!timeout_height && !timeout_timestamp) { + throw 'both of timeout_height and timeout_timestamp are undefined'; + } + + this.source_port = source_port; + this.source_channel = source_channel; + this.token = token; + this.sender = sender; + this.receiver = receiver; + this.timeout_height = timeout_height; + this.timeout_timestamp = timeout_timestamp + ? Numeric.parse(timeout_timestamp) + : undefined; + } + + public static fromAmino(data: MsgTransfer.Amino, _?: boolean): MsgTransfer { + _; + const { + value: { + source_port, + source_channel, + token, + sender, + receiver, + timeout_height, + timeout_timestamp, + }, + } = data; + + if (!timeout_height && !timeout_timestamp) { + throw 'both of timeout_height and timeout_timestamp are undefined'; + } + + return new MsgTransfer( + source_port, + source_channel, + token ? Coin.fromAmino(token) : undefined, + sender, + receiver, + timeout_height ? Height.fromAmino(timeout_height) : undefined, + timeout_timestamp ? Numeric.parse(timeout_timestamp) : undefined + ); + } + + public toAmino(_?: boolean): MsgTransfer.Amino { + _; + const { + source_port, + source_channel, + token, + sender, + receiver, + timeout_height, + timeout_timestamp, + } = this; + return { + type: 'cosmos-sdk/MsgTransfer', + value: { + source_port, + source_channel, + token: token ? token.toAmino() : undefined, + sender, + receiver, + timeout_height: timeout_height?.toAmino() || {}, + timeout_timestamp: timeout_timestamp?.toFixed() || undefined, + }, + }; + } + + public static fromData(data: MsgTransfer.Data, _?: boolean): MsgTransfer { + _; + const { + source_port, + source_channel, + token, + sender, + receiver, + timeout_timestamp, + timeout_height, + } = data; + + if (!timeout_height && !timeout_timestamp) { + throw 'both of timeout_height and timeout_timestamp are undefined'; + } + + return new MsgTransfer( + source_port, + source_channel, + token ? Coin.fromData(token) : undefined, + sender, + receiver, + timeout_height ? Height.fromData(timeout_height) : undefined, + timeout_timestamp ? Number.parseInt(timeout_timestamp) : undefined + ); + } + + public toData(_?: boolean): MsgTransfer.Data { + _; + const { + source_port, + source_channel, + token, + sender, + receiver, + timeout_height, + timeout_timestamp, + } = this; + return { + '@type': '/ibc.applications.transfer.v1.MsgTransfer', + source_port, + source_channel, + token: token ? token.toData() : undefined, + sender, + receiver, + timeout_height: timeout_height + ? timeout_height.toData() + : new Height(0, 0).toData(), + timeout_timestamp: timeout_timestamp?.toFixed() || '0', + }; + } + + public static fromProto(proto: MsgTransfer.Proto, _?: boolean): MsgTransfer { + _; + if (!proto.timeoutHeight && proto.timeoutTimestamp.toNumber() == 0) { + throw 'both of timeout_height and timeout_timestamp are empty'; + } + + return new MsgTransfer( + proto.sourcePort, + proto.sourceChannel, + proto.token ? Coin.fromProto(proto.token) : undefined, + proto.sender, + proto.receiver, + proto.timeoutHeight ? Height.fromProto(proto.timeoutHeight) : undefined, + proto.timeoutTimestamp.toNumber() + ); + } + + public toProto(_?: boolean): MsgTransfer.Proto { + _; + const { + source_port, + source_channel, + token, + sender, + receiver, + timeout_height, + timeout_timestamp, + } = this; + return MsgTransfer_pb.fromPartial({ + sourcePort: source_port, + sourceChannel: source_channel, + token: token ? token.toProto() : undefined, + sender, + receiver, + timeoutHeight: timeout_height ? timeout_height.toProto() : undefined, + timeoutTimestamp: Long.fromString(timeout_timestamp?.toFixed() || '0'), + }); + } + + public packAny(_?: boolean): Any { + _; + return Any.fromPartial({ + typeUrl: '/ibc.applications.transfer.v1.MsgTransfer', + value: MsgTransfer_pb.encode(this.toProto()).finish(), + }); + } + + public static unpackAny(msgAny: Any, _?: boolean): MsgTransfer { + _; + return MsgTransfer.fromProto(MsgTransfer_pb.decode(msgAny.value)); + } +} + +export namespace MsgTransfer { + export interface Amino { + type: 'cosmos-sdk/MsgTransfer'; + value: { + source_port: string; + source_channel: string; + token?: Coin.Amino; + sender: AccAddress; + receiver: string; + timeout_height: Height.Amino; + timeout_timestamp?: string; + }; + } + export interface Data { + '@type': '/ibc.applications.transfer.v1.MsgTransfer'; + source_port: string; + source_channel: string; + token?: Coin.Data; + sender: AccAddress; + receiver: string; + timeout_height: Height.Data; + timeout_timestamp: string; + } + export type Proto = MsgTransfer_pb; +} diff --git a/src/core/ibc/applications/transfer/v2/FungibleTokenPacketData.ts b/src/core/ibc/applications/transfer/v2/FungibleTokenPacketData.ts new file mode 100644 index 000000000..d19233e42 --- /dev/null +++ b/src/core/ibc/applications/transfer/v2/FungibleTokenPacketData.ts @@ -0,0 +1,102 @@ +import { FungibleTokenPacketData as FungibleTokenPacketData_pb } from '@terra-money/terra.proto/ibc/applications/transfer/v2/packet'; +import { JSONSerializable } from '../../../../../util/json'; + +/** + * FungibleTokenPacketData defines a struct for the packet payload + * See FungibleTokenPacketData spec: + * https://github.com/cosmos/ibc/tree/master/spec/app/ics-020-fungible-token-transfer#data-structures + */ +export class FungibleTokenPacketData extends JSONSerializable< + FungibleTokenPacketData.Amino, + FungibleTokenPacketData.Data, + FungibleTokenPacketData.Proto +> { + /** + * @param denom the token denomination to be transferred + * @param amount the token amount to be transferred + * @param sender the sender address + * @param receiver the recipient address on the destination chain + */ + constructor( + public denom: string, + public amount: string, + public sender: string, + public receiver: string, + ) { + super(); + } + + public static fromAmino(data: FungibleTokenPacketData.Amino): FungibleTokenPacketData { + const { denom, amount, sender, receiver } = data; + return new FungibleTokenPacketData(denom, amount, sender, receiver); + } + + public toAmino(): FungibleTokenPacketData.Amino { + const { denom, amount, sender, receiver } = this; + const res: FungibleTokenPacketData.Amino = { + denom, + amount, + sender, + receiver, + }; + return res; + } + + public static fromData(data: FungibleTokenPacketData.Data): FungibleTokenPacketData { + const { denom, amount, sender, receiver } = data; + return new FungibleTokenPacketData( + denom, + amount, + sender, + receiver + ); + } + + public toData(): FungibleTokenPacketData.Data { + const { denom, amount, sender, receiver } = this; + const res: FungibleTokenPacketData.Data = { + denom, + amount, + sender, + receiver + }; + return res; + } + + public static fromProto(proto: FungibleTokenPacketData.Proto): FungibleTokenPacketData { + return new FungibleTokenPacketData( + proto.denom, + proto.amount, + proto.sender, + proto.receiver, + ); + } + + public toProto(): FungibleTokenPacketData.Proto { + const { denom, amount, sender, receiver } = this; + return FungibleTokenPacketData_pb.fromPartial({ + denom, + amount, + sender, + receiver + }); + } +} + +export namespace FungibleTokenPacketData { + export interface Amino { + denom: string; + amount: string; + sender: string; + receiver: string; + } + + export interface Data { + denom: string; + amount: string; + sender: string; + receiver: string; + } + + export type Proto = FungibleTokenPacketData_pb; +} diff --git a/src/core/ibc/core/channel/PacketId.ts b/src/core/ibc/core/channel/PacketId.ts new file mode 100644 index 000000000..a4e32bdb5 --- /dev/null +++ b/src/core/ibc/core/channel/PacketId.ts @@ -0,0 +1,94 @@ +import { PacketId as PacketId_pb } from '@terra-money/terra.proto/ibc/core/channel/v1/channel'; +import { JSONSerializable } from '../../../../util/json'; +import * as Long from 'long'; + +/** + * PacketId is an identifer for a unique Packet + * Source chains refer to packets by source port/channel + * Destination chains refer to packets by destination port/channel + */ +export class PacketId extends JSONSerializable< + PacketId.Amino, + PacketId.Data, + PacketId.Proto +> { + /** + * @param port_id channel port identifier + * @param channel_id channel unique identifier + * @param sequence packet sequence + */ + constructor( + public port_id: string, + public channel_id: string, + public sequence: number + ) { + super(); + } + + public static fromAmino(data: PacketId.Amino): PacketId { + const { port_id, channel_id, sequence } = data; + return new PacketId(port_id, channel_id, Number.parseInt(sequence)); + } + + public toAmino(): PacketId.Amino { + const { port_id, channel_id, sequence } = this; + const res: PacketId.Amino = { + port_id, + channel_id, + sequence: sequence.toFixed(), + }; + return res; + } + + public static fromData(data: PacketId.Data): PacketId { + const { port_id, channel_id, sequence } = data; + return new PacketId( + port_id, + channel_id, + Number.parseInt(sequence), + ); + } + + public toData(): PacketId.Data { + const { port_id, channel_id, sequence } = this; + const res: PacketId.Data = { + port_id, + channel_id, + sequence: sequence.toFixed(), + }; + return res; + } + + public static fromProto(proto: PacketId.Proto): PacketId { + return new PacketId( + proto.portId, + proto.channelId, + proto.sequence.toNumber(), + ); + } + + public toProto(): PacketId.Proto { + const { port_id, channel_id, sequence } = this; + return PacketId_pb.fromPartial({ + portId: port_id, + channelId: channel_id, + sequence: Long.fromNumber(sequence), + }); + } +} + +export namespace PacketId { + export interface Amino { + port_id: string; + channel_id: string; + sequence: string; + } + + export interface Data { + port_id: string; + channel_id: string; + sequence: string; + } + + export type Proto = PacketId_pb; +} diff --git a/src/core/ibc/msgs/channel/MsgChannelCloseConfirm.ts b/src/core/ibc/msgs/channel/MsgChannelCloseConfirm.ts index 3318b18a4..2533a97ae 100644 --- a/src/core/ibc/msgs/channel/MsgChannelCloseConfirm.ts +++ b/src/core/ibc/msgs/channel/MsgChannelCloseConfirm.ts @@ -29,18 +29,22 @@ export class MsgChannelCloseConfirm extends JSONSerializable< super(); } - public static fromAmino(_: any): MsgChannelCloseConfirm { + public static fromAmino(_: any, isClassic?: boolean): MsgChannelCloseConfirm { _; + isClassic; throw new Error('Amino not supported'); } - public toAmino(): any { + public toAmino(_?: boolean): any { + _; throw new Error('Amino not supported'); } public static fromData( - data: MsgChannelCloseConfirm.Data + data: MsgChannelCloseConfirm.Data, + _?: boolean ): MsgChannelCloseConfirm { + _; const { port_id, channel_id, proof_init, proof_height, signer } = data; return new MsgChannelCloseConfirm( port_id, @@ -51,7 +55,8 @@ export class MsgChannelCloseConfirm extends JSONSerializable< ); } - public toData(): MsgChannelCloseConfirm.Data { + public toData(_?: boolean): MsgChannelCloseConfirm.Data { + _; const { port_id, channel_id, proof_init, proof_height, signer } = this; return { '@type': '/ibc.core.channel.v1.MsgChannelCloseConfirm', @@ -64,8 +69,10 @@ export class MsgChannelCloseConfirm extends JSONSerializable< } public static fromProto( - proto: MsgChannelCloseConfirm.Proto + proto: MsgChannelCloseConfirm.Proto, + _?: boolean ): MsgChannelCloseConfirm { + _; return new MsgChannelCloseConfirm( proto.portId, proto.channelId, @@ -75,7 +82,8 @@ export class MsgChannelCloseConfirm extends JSONSerializable< ); } - public toProto(): MsgChannelCloseConfirm.Proto { + public toProto(_?: boolean): MsgChannelCloseConfirm.Proto { + _; const { port_id, channel_id, proof_init, proof_height, signer } = this; return MsgChannelCloseConfirm_pb.fromPartial({ portId: port_id, @@ -86,14 +94,16 @@ export class MsgChannelCloseConfirm extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/ibc.core.channel.v1.MsgChannelCloseConfirm', value: MsgChannelCloseConfirm_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgChannelCloseConfirm { + public static unpackAny(msgAny: Any, _?: boolean): MsgChannelCloseConfirm { + _; return MsgChannelCloseConfirm.fromProto( MsgChannelCloseConfirm_pb.decode(msgAny.value) ); diff --git a/src/core/ibc/msgs/channel/MsgChannelCloseInit.ts b/src/core/ibc/msgs/channel/MsgChannelCloseInit.ts index 158177634..f64b0f5f6 100644 --- a/src/core/ibc/msgs/channel/MsgChannelCloseInit.ts +++ b/src/core/ibc/msgs/channel/MsgChannelCloseInit.ts @@ -24,21 +24,28 @@ export class MsgChannelCloseInit extends JSONSerializable< super(); } - public static fromAmino(_: any): MsgChannelCloseInit { + public static fromAmino(_: any, isClassic?: boolean): MsgChannelCloseInit { _; + isClassic; throw new Error('Amino not supported'); } - public toAmino(): any { + public toAmino(_?: boolean): any { + _; throw new Error('Amino not supported'); } - public static fromData(data: MsgChannelCloseInit.Data): MsgChannelCloseInit { + public static fromData( + data: MsgChannelCloseInit.Data, + _?: boolean + ): MsgChannelCloseInit { + _; const { port_id, channel_id, signer } = data; return new MsgChannelCloseInit(port_id, channel_id, signer); } - public toData(): MsgChannelCloseInit.Data { + public toData(_?: boolean): MsgChannelCloseInit.Data { + _; const { port_id, channel_id, signer } = this; return { '@type': '/ibc.core.channel.v1.MsgChannelCloseInit', @@ -49,12 +56,15 @@ export class MsgChannelCloseInit extends JSONSerializable< } public static fromProto( - proto: MsgChannelCloseInit.Proto + proto: MsgChannelCloseInit.Proto, + _?: boolean ): MsgChannelCloseInit { + _; return new MsgChannelCloseInit(proto.portId, proto.channelId, proto.signer); } - public toProto(): MsgChannelCloseInit.Proto { + public toProto(_?: boolean): MsgChannelCloseInit.Proto { + _; const { port_id, channel_id, signer } = this; return MsgChannelCloseInit_pb.fromPartial({ portId: port_id, @@ -63,14 +73,16 @@ export class MsgChannelCloseInit extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/ibc.core.channel.v1.MsgChannelCloseInit', value: MsgChannelCloseInit_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgChannelCloseInit { + public static unpackAny(msgAny: Any, _?: boolean): MsgChannelCloseInit { + _; return MsgChannelCloseInit.fromProto( MsgChannelCloseInit_pb.decode(msgAny.value) ); diff --git a/src/core/ibc/msgs/channel/MsgChannelOpenAck.ts b/src/core/ibc/msgs/channel/MsgChannelOpenAck.ts index 472d9439f..52d25cf28 100644 --- a/src/core/ibc/msgs/channel/MsgChannelOpenAck.ts +++ b/src/core/ibc/msgs/channel/MsgChannelOpenAck.ts @@ -33,16 +33,22 @@ export class MsgChannelOpenAck extends JSONSerializable< super(); } - public static fromAmino(_: any): MsgChannelOpenAck { + public static fromAmino(_: any, isClassic?: boolean): MsgChannelOpenAck { _; + isClassic; throw new Error('Amino not supported'); } - public toAmino(): any { + public toAmino(_?: boolean): any { + _; throw new Error('Amino not supported'); } - public static fromData(data: MsgChannelOpenAck.Data): MsgChannelOpenAck { + public static fromData( + data: MsgChannelOpenAck.Data, + _?: boolean + ): MsgChannelOpenAck { + _; const { port_id, channel_id, @@ -63,7 +69,8 @@ export class MsgChannelOpenAck extends JSONSerializable< ); } - public toData(): MsgChannelOpenAck.Data { + public toData(_?: boolean): MsgChannelOpenAck.Data { + _; const { port_id, channel_id, @@ -85,7 +92,11 @@ export class MsgChannelOpenAck extends JSONSerializable< }; } - public static fromProto(proto: MsgChannelOpenAck.Proto): MsgChannelOpenAck { + public static fromProto( + proto: MsgChannelOpenAck.Proto, + _?: boolean + ): MsgChannelOpenAck { + _; return new MsgChannelOpenAck( proto.portId, proto.channelId, @@ -97,7 +108,8 @@ export class MsgChannelOpenAck extends JSONSerializable< ); } - public toProto(): MsgChannelOpenAck.Proto { + public toProto(_?: boolean): MsgChannelOpenAck.Proto { + _; const { port_id, channel_id, @@ -118,14 +130,16 @@ export class MsgChannelOpenAck extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/ibc.core.channel.v1.MsgChannelOpenAck', value: MsgChannelOpenAck_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgChannelOpenAck { + public static unpackAny(msgAny: Any, _?: boolean): MsgChannelOpenAck { + _; return MsgChannelOpenAck.fromProto( MsgChannelOpenAck_pb.decode(msgAny.value) ); diff --git a/src/core/ibc/msgs/channel/MsgChannelOpenConfirm.ts b/src/core/ibc/msgs/channel/MsgChannelOpenConfirm.ts index a41b5868e..30a244f14 100644 --- a/src/core/ibc/msgs/channel/MsgChannelOpenConfirm.ts +++ b/src/core/ibc/msgs/channel/MsgChannelOpenConfirm.ts @@ -29,18 +29,22 @@ export class MsgChannelOpenConfirm extends JSONSerializable< super(); } - public static fromAmino(_: any): MsgChannelOpenConfirm { + public static fromAmino(_: any, isClassic?: boolean): MsgChannelOpenConfirm { _; + isClassic; throw new Error('Amino not supported'); } - public toAmino(): any { + public toAmino(_?: boolean): any { + _; throw new Error('Amino not supported'); } public static fromData( - data: MsgChannelOpenConfirm.Data + data: MsgChannelOpenConfirm.Data, + _?: boolean ): MsgChannelOpenConfirm { + _; const { port_id, channel_id, proof_ack, proof_height, signer } = data; return new MsgChannelOpenConfirm( port_id, @@ -51,7 +55,8 @@ export class MsgChannelOpenConfirm extends JSONSerializable< ); } - public toData(): MsgChannelOpenConfirm.Data { + public toData(_?: boolean): MsgChannelOpenConfirm.Data { + _; const { port_id, channel_id, proof_ack, proof_height, signer } = this; return { '@type': '/ibc.core.channel.v1.MsgChannelOpenConfirm', @@ -64,8 +69,10 @@ export class MsgChannelOpenConfirm extends JSONSerializable< } public static fromProto( - proto: MsgChannelOpenConfirm.Proto + proto: MsgChannelOpenConfirm.Proto, + _?: boolean ): MsgChannelOpenConfirm { + _; return new MsgChannelOpenConfirm( proto.portId, proto.channelId, @@ -75,7 +82,8 @@ export class MsgChannelOpenConfirm extends JSONSerializable< ); } - public toProto(): MsgChannelOpenConfirm.Proto { + public toProto(_?: boolean): MsgChannelOpenConfirm.Proto { + _; const { port_id, channel_id, proof_ack, proof_height, signer } = this; return MsgChannelOpenConfirm_pb.fromPartial({ portId: port_id, @@ -86,14 +94,16 @@ export class MsgChannelOpenConfirm extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/ibc.core.channel.v1.MsgChannelOpenConfirm', value: MsgChannelOpenConfirm_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgChannelOpenConfirm { + public static unpackAny(msgAny: Any, _?: boolean): MsgChannelOpenConfirm { + _; return MsgChannelOpenConfirm.fromProto( MsgChannelOpenConfirm_pb.decode(msgAny.value) ); diff --git a/src/core/ibc/msgs/channel/MsgChannelOpenInit.ts b/src/core/ibc/msgs/channel/MsgChannelOpenInit.ts index 9a9a75f48..120bc2386 100644 --- a/src/core/ibc/msgs/channel/MsgChannelOpenInit.ts +++ b/src/core/ibc/msgs/channel/MsgChannelOpenInit.ts @@ -25,16 +25,22 @@ export class MsgChannelOpenInit extends JSONSerializable< super(); } - public static fromAmino(_: any): MsgChannelOpenInit { + public static fromAmino(_: any, isClassic?: boolean): MsgChannelOpenInit { _; + isClassic; throw new Error('Amino not supported'); } - public toAmino(): any { + public toAmino(_?: boolean): any { + _; throw new Error('Amino not supported'); } - public static fromData(data: MsgChannelOpenInit.Data): MsgChannelOpenInit { + public static fromData( + data: MsgChannelOpenInit.Data, + _?: boolean + ): MsgChannelOpenInit { + _; const { port_id, channel, signer } = data; return new MsgChannelOpenInit( port_id, @@ -43,7 +49,8 @@ export class MsgChannelOpenInit extends JSONSerializable< ); } - public toData(): MsgChannelOpenInit.Data { + public toData(_?: boolean): MsgChannelOpenInit.Data { + _; const { port_id, channel, signer } = this; return { '@type': '/ibc.core.channel.v1.MsgChannelOpenInit', @@ -53,7 +60,11 @@ export class MsgChannelOpenInit extends JSONSerializable< }; } - public static fromProto(proto: MsgChannelOpenInit.Proto): MsgChannelOpenInit { + public static fromProto( + proto: MsgChannelOpenInit.Proto, + _?: boolean + ): MsgChannelOpenInit { + _; return new MsgChannelOpenInit( proto.portId, proto.channel ? Channel.fromProto(proto.channel) : undefined, @@ -61,7 +72,8 @@ export class MsgChannelOpenInit extends JSONSerializable< ); } - public toProto(): MsgChannelOpenInit.Proto { + public toProto(_?: boolean): MsgChannelOpenInit.Proto { + _; const { port_id, channel, signer } = this; return MsgChannelOpenInit_pb.fromPartial({ portId: port_id, @@ -70,14 +82,16 @@ export class MsgChannelOpenInit extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/ibc.core.channel.v1.MsgChannelOpenInit', value: MsgChannelOpenInit_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgChannelOpenInit { + public static unpackAny(msgAny: Any, _?: boolean): MsgChannelOpenInit { + _; return MsgChannelOpenInit.fromProto( MsgChannelOpenInit_pb.decode(msgAny.value) ); diff --git a/src/core/ibc/msgs/channel/MsgChannelOpenTry.ts b/src/core/ibc/msgs/channel/MsgChannelOpenTry.ts index e0a1f6612..b13ce6d51 100644 --- a/src/core/ibc/msgs/channel/MsgChannelOpenTry.ts +++ b/src/core/ibc/msgs/channel/MsgChannelOpenTry.ts @@ -34,16 +34,22 @@ export class MsgChannelOpenTry extends JSONSerializable< super(); } - public static fromAmino(_: any): MsgChannelOpenTry { + public static fromAmino(_: any, isClassic?: boolean): MsgChannelOpenTry { _; + isClassic; throw new Error('Amino not supported'); } - public toAmino(): any { + public toAmino(_?: boolean): any { + _; throw new Error('Amino not supported'); } - public static fromData(data: MsgChannelOpenTry.Data): MsgChannelOpenTry { + public static fromData( + data: MsgChannelOpenTry.Data, + _?: boolean + ): MsgChannelOpenTry { + _; const { port_id, previous_channel_id, @@ -64,7 +70,8 @@ export class MsgChannelOpenTry extends JSONSerializable< ); } - public toData(): MsgChannelOpenTry.Data { + public toData(_?: boolean): MsgChannelOpenTry.Data { + _; const { port_id, previous_channel_id, @@ -86,7 +93,11 @@ export class MsgChannelOpenTry extends JSONSerializable< }; } - public static fromProto(proto: MsgChannelOpenTry.Proto): MsgChannelOpenTry { + public static fromProto( + proto: MsgChannelOpenTry.Proto, + _?: boolean + ): MsgChannelOpenTry { + _; return new MsgChannelOpenTry( proto.portId, proto.previousChannelId, @@ -98,7 +109,8 @@ export class MsgChannelOpenTry extends JSONSerializable< ); } - public toProto(): MsgChannelOpenTry.Proto { + public toProto(_?: boolean): MsgChannelOpenTry.Proto { + _; const { port_id, previous_channel_id, @@ -119,14 +131,16 @@ export class MsgChannelOpenTry extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/ibc.core.channel.v1.MsgChannelOpenTry', value: MsgChannelOpenTry_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgChannelOpenTry { + public static unpackAny(msgAny: Any, _?: boolean): MsgChannelOpenTry { + _; return MsgChannelOpenTry.fromProto( MsgChannelOpenTry_pb.decode(msgAny.value) ); diff --git a/src/core/ibc/msgs/channel/MsgRecvAcknowledgement.ts b/src/core/ibc/msgs/channel/MsgRecvAcknowledgement.ts index 3714c9414..793d9b0e1 100644 --- a/src/core/ibc/msgs/channel/MsgRecvAcknowledgement.ts +++ b/src/core/ibc/msgs/channel/MsgRecvAcknowledgement.ts @@ -30,16 +30,22 @@ export class MsgAcknowledgement extends JSONSerializable< super(); } - public static fromAmino(_: any): MsgAcknowledgement { + public static fromAmino(_: any, isClassic?: boolean): MsgAcknowledgement { _; + isClassic; throw new Error('Amino not supported'); } - public toAmino(): any { + public toAmino(_?: boolean): any { + _; throw new Error('Amino not supported'); } - public static fromData(data: MsgAcknowledgement.Data): MsgAcknowledgement { + public static fromData( + data: MsgAcknowledgement.Data, + _?: boolean + ): MsgAcknowledgement { + _; const { packet, acknowledgement, proof_acked, proof_height, signer } = data; return new MsgAcknowledgement( packet ? Packet.fromData(packet) : undefined, @@ -50,7 +56,8 @@ export class MsgAcknowledgement extends JSONSerializable< ); } - public toData(): MsgAcknowledgement.Data { + public toData(_?: boolean): MsgAcknowledgement.Data { + _; const { packet, acknowledgement, proof_acked, proof_height, signer } = this; return { '@type': '/ibc.core.channel.v1.MsgAcknowledgement', @@ -62,7 +69,11 @@ export class MsgAcknowledgement extends JSONSerializable< }; } - public static fromProto(proto: MsgAcknowledgement.Proto): MsgAcknowledgement { + public static fromProto( + proto: MsgAcknowledgement.Proto, + _?: boolean + ): MsgAcknowledgement { + _; return new MsgAcknowledgement( proto.packet ? Packet.fromProto(proto.packet) : undefined, Buffer.from(proto.acknowledgement).toString('base64'), @@ -72,7 +83,8 @@ export class MsgAcknowledgement extends JSONSerializable< ); } - public toProto(): MsgAcknowledgement.Proto { + public toProto(_?: boolean): MsgAcknowledgement.Proto { + _; const { packet, acknowledgement, proof_acked, proof_height, signer } = this; return MsgAcknowledgement_pb.fromPartial({ packet: packet ? packet.toProto() : undefined, @@ -83,14 +95,16 @@ export class MsgAcknowledgement extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/ibc.core.channel.v1.MsgAcknowledgement', value: MsgAcknowledgement_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgAcknowledgement { + public static unpackAny(msgAny: Any, _?: boolean): MsgAcknowledgement { + _; return MsgAcknowledgement.fromProto( MsgAcknowledgement_pb.decode(msgAny.value) ); diff --git a/src/core/ibc/msgs/channel/MsgRecvPacket.ts b/src/core/ibc/msgs/channel/MsgRecvPacket.ts index f5ad50654..2ce24a6fc 100644 --- a/src/core/ibc/msgs/channel/MsgRecvPacket.ts +++ b/src/core/ibc/msgs/channel/MsgRecvPacket.ts @@ -28,16 +28,19 @@ export class MsgRecvPacket extends JSONSerializable< super(); } - public static fromAmino(_: any): MsgRecvPacket { + public static fromAmino(_: any, isClassic?: boolean): MsgRecvPacket { _; + isClassic; throw new Error('Amino not supported'); } - public toAmino(): any { + public toAmino(_?: boolean): any { + _; throw new Error('Amino not supported'); } - public static fromData(data: MsgRecvPacket.Data): MsgRecvPacket { + public static fromData(data: MsgRecvPacket.Data, _?: boolean): MsgRecvPacket { + _; const { packet, proof_commitment, proof_height, signer } = data; return new MsgRecvPacket( packet ? Packet.fromData(packet) : undefined, @@ -47,7 +50,8 @@ export class MsgRecvPacket extends JSONSerializable< ); } - public toData(): MsgRecvPacket.Data { + public toData(_?: boolean): MsgRecvPacket.Data { + _; const { packet, proof_commitment, proof_height, signer } = this; return { '@type': '/ibc.core.channel.v1.MsgRecvPacket', @@ -58,7 +62,11 @@ export class MsgRecvPacket extends JSONSerializable< }; } - public static fromProto(proto: MsgRecvPacket.Proto): MsgRecvPacket { + public static fromProto( + proto: MsgRecvPacket.Proto, + _?: boolean + ): MsgRecvPacket { + _; return new MsgRecvPacket( proto.packet ? Packet.fromProto(proto.packet) : undefined, Buffer.from(proto.proofCommitment).toString('base64'), @@ -67,7 +75,8 @@ export class MsgRecvPacket extends JSONSerializable< ); } - public toProto(): MsgRecvPacket.Proto { + public toProto(_?: boolean): MsgRecvPacket.Proto { + _; const { packet, proof_commitment, proof_height, signer } = this; return MsgRecvPacket_pb.fromPartial({ packet: packet ? packet.toProto() : undefined, @@ -77,14 +86,16 @@ export class MsgRecvPacket extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/ibc.core.channel.v1.MsgRecvPacket', value: MsgRecvPacket_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgRecvPacket { + public static unpackAny(msgAny: Any, _?: boolean): MsgRecvPacket { + _; return MsgRecvPacket.fromProto(MsgRecvPacket_pb.decode(msgAny.value)); } } diff --git a/src/core/ibc/msgs/channel/MsgTimeout.ts b/src/core/ibc/msgs/channel/MsgTimeout.ts index 573af1648..ad2191741 100644 --- a/src/core/ibc/msgs/channel/MsgTimeout.ts +++ b/src/core/ibc/msgs/channel/MsgTimeout.ts @@ -31,16 +31,19 @@ export class MsgTimeout extends JSONSerializable< super(); } - public static fromAmino(_: any): MsgTimeout { + public static fromAmino(_: any, isClassic?: boolean): MsgTimeout { _; + isClassic; throw new Error('Amino not supported'); } - public toAmino(): any { + public toAmino(_?: boolean): any { + _; throw new Error('Amino not supported'); } - public static fromData(data: MsgTimeout.Data): MsgTimeout { + public static fromData(data: MsgTimeout.Data, _?: boolean): MsgTimeout { + _; const { packet, proof_unreceived, @@ -57,7 +60,8 @@ export class MsgTimeout extends JSONSerializable< ); } - public toData(): MsgTimeout.Data { + public toData(_?: boolean): MsgTimeout.Data { + _; const { packet, proof_unreceived, @@ -75,7 +79,8 @@ export class MsgTimeout extends JSONSerializable< }; } - public static fromProto(proto: MsgTimeout.Proto): MsgTimeout { + public static fromProto(proto: MsgTimeout.Proto, _?: boolean): MsgTimeout { + _; return new MsgTimeout( proto.packet ? Packet.fromProto(proto.packet) : undefined, Buffer.from(proto.proofUnreceived).toString('base64'), @@ -85,7 +90,8 @@ export class MsgTimeout extends JSONSerializable< ); } - public toProto(): MsgTimeout.Proto { + public toProto(_?: boolean): MsgTimeout.Proto { + _; const { packet, proof_unreceived, @@ -102,14 +108,16 @@ export class MsgTimeout extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/ibc.core.channel.v1.MsgTimeout', value: MsgTimeout_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgTimeout { + public static unpackAny(msgAny: Any, _?: boolean): MsgTimeout { + _; return MsgTimeout.fromProto(MsgTimeout_pb.decode(msgAny.value)); } } diff --git a/src/core/ibc/msgs/channel/MsgTimeoutClose.ts b/src/core/ibc/msgs/channel/MsgTimeoutClose.ts index 4e29feee4..8d109916f 100644 --- a/src/core/ibc/msgs/channel/MsgTimeoutClose.ts +++ b/src/core/ibc/msgs/channel/MsgTimeoutClose.ts @@ -33,16 +33,22 @@ export class MsgTimeoutOnClose extends JSONSerializable< super(); } - public static fromAmino(_: any): MsgTimeoutOnClose { + public static fromAmino(_: any, isClassic?: boolean): MsgTimeoutOnClose { _; + isClassic; throw new Error('Amino not supported'); } - public toAmino(): any { + public toAmino(_?: boolean): any { + _; throw new Error('Amino not supported'); } - public static fromData(data: MsgTimeoutOnClose.Data): MsgTimeoutOnClose { + public static fromData( + data: MsgTimeoutOnClose.Data, + _?: boolean + ): MsgTimeoutOnClose { + _; const { packet, proof_unreceived, @@ -61,7 +67,8 @@ export class MsgTimeoutOnClose extends JSONSerializable< ); } - public toData(): MsgTimeoutOnClose.Data { + public toData(_?: boolean): MsgTimeoutOnClose.Data { + _; const { packet, proof_unreceived, @@ -81,7 +88,11 @@ export class MsgTimeoutOnClose extends JSONSerializable< }; } - public static fromProto(proto: MsgTimeoutOnClose.Proto): MsgTimeoutOnClose { + public static fromProto( + proto: MsgTimeoutOnClose.Proto, + _?: boolean + ): MsgTimeoutOnClose { + _; return new MsgTimeoutOnClose( proto.packet ? Packet.fromProto(proto.packet) : undefined, Buffer.from(proto.proofUnreceived).toString('base64'), @@ -92,7 +103,8 @@ export class MsgTimeoutOnClose extends JSONSerializable< ); } - public toProto(): MsgTimeoutOnClose.Proto { + public toProto(_?: boolean): MsgTimeoutOnClose.Proto { + _; const { packet, proof_unreceived, @@ -111,14 +123,16 @@ export class MsgTimeoutOnClose extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/ibc.core.channel.v1.MsgTimeoutOnClose', value: MsgTimeoutOnClose_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgTimeoutOnClose { + public static unpackAny(msgAny: Any, _?: boolean): MsgTimeoutOnClose { + _; return MsgTimeoutOnClose.fromProto( MsgTimeoutOnClose_pb.decode(msgAny.value) ); diff --git a/src/core/ibc/msgs/client/MsgCreateClient.ts b/src/core/ibc/msgs/client/MsgCreateClient.ts index 61443e4aa..d91f19462 100644 --- a/src/core/ibc/msgs/client/MsgCreateClient.ts +++ b/src/core/ibc/msgs/client/MsgCreateClient.ts @@ -25,21 +25,28 @@ export class MsgCreateClient extends JSONSerializable< this.signer = signer; } - public static fromAmino(_: any): MsgCreateClient { + public static fromAmino(_: any, isClassic?: boolean): MsgCreateClient { _; + isClassic; throw new Error('Amino not supported'); } - public toAmino(): any { + public toAmino(_?: boolean): any { + _; throw new Error('Amino not supported'); } - public static fromData(data: MsgCreateClient.Data): MsgCreateClient { + public static fromData( + data: MsgCreateClient.Data, + _?: boolean + ): MsgCreateClient { + _; const { client_state, consensus_state, signer } = data; return new MsgCreateClient(client_state, consensus_state, signer); } - public toData(): MsgCreateClient.Data { + public toData(_?: boolean): MsgCreateClient.Data { + _; const { client_state, consensus_state, signer } = this; return { '@type': '/ibc.core.client.v1.MsgCreateClient', @@ -49,7 +56,11 @@ export class MsgCreateClient extends JSONSerializable< }; } - public static fromProto(proto: MsgCreateClient.Proto): MsgCreateClient { + public static fromProto( + proto: MsgCreateClient.Proto, + _?: boolean + ): MsgCreateClient { + _; return new MsgCreateClient( proto.clientState, proto.consensusState, @@ -57,7 +68,8 @@ export class MsgCreateClient extends JSONSerializable< ); } - public toProto(): MsgCreateClient.Proto { + public toProto(_?: boolean): MsgCreateClient.Proto { + _; const { client_state, consensus_state, signer } = this; return MsgCreateClient_pb.fromPartial({ clientState: client_state, @@ -66,14 +78,16 @@ export class MsgCreateClient extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/ibc.core.client.v1.MsgCreateClient', value: MsgCreateClient_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgCreateClient { + public static unpackAny(msgAny: Any, _?: boolean): MsgCreateClient { + _; return MsgCreateClient.fromProto(MsgCreateClient_pb.decode(msgAny.value)); } } diff --git a/src/core/ibc/msgs/client/MsgSubmitMisbehaviour.ts b/src/core/ibc/msgs/client/MsgSubmitMisbehaviour.ts index 3758c628e..99b7882a9 100644 --- a/src/core/ibc/msgs/client/MsgSubmitMisbehaviour.ts +++ b/src/core/ibc/msgs/client/MsgSubmitMisbehaviour.ts @@ -23,23 +23,28 @@ export class MsgSubmitMisbehaviour extends JSONSerializable< super(); } - public static fromAmino(_: any): MsgSubmitMisbehaviour { + public static fromAmino(_: any, isClassic?: boolean): MsgSubmitMisbehaviour { _; + isClassic; throw new Error('Amino not supported'); } - public toAmino(): any { + public toAmino(_?: boolean): any { + _; throw new Error('Amino not supported'); } public static fromData( - data: MsgSubmitMisbehaviour.Data + data: MsgSubmitMisbehaviour.Data, + _?: boolean ): MsgSubmitMisbehaviour { + _; const { client_id, misbehaviour, signer } = data; return new MsgSubmitMisbehaviour(client_id, misbehaviour, signer); } - public toData(): MsgSubmitMisbehaviour.Data { + public toData(_?: boolean): MsgSubmitMisbehaviour.Data { + _; const { client_id, misbehaviour, signer } = this; return { '@type': '/ibc.core.client.v1.MsgSubmitMisbehaviour', @@ -50,8 +55,10 @@ export class MsgSubmitMisbehaviour extends JSONSerializable< } public static fromProto( - proto: MsgSubmitMisbehaviour.Proto + proto: MsgSubmitMisbehaviour.Proto, + _?: boolean ): MsgSubmitMisbehaviour { + _; return new MsgSubmitMisbehaviour( proto.clientId, proto.misbehaviour, @@ -59,7 +66,8 @@ export class MsgSubmitMisbehaviour extends JSONSerializable< ); } - public toProto(): MsgSubmitMisbehaviour.Proto { + public toProto(_?: boolean): MsgSubmitMisbehaviour.Proto { + _; const { client_id, misbehaviour, signer } = this; return MsgSubmitMisbehaviour_pb.fromPartial({ clientId: client_id, @@ -68,14 +76,16 @@ export class MsgSubmitMisbehaviour extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/ibc.core.client.v1.MsgSubmitMisbehaviour', value: MsgSubmitMisbehaviour_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgSubmitMisbehaviour { + public static unpackAny(msgAny: Any, _?: boolean): MsgSubmitMisbehaviour { + _; return MsgSubmitMisbehaviour.fromProto( MsgSubmitMisbehaviour_pb.decode(msgAny.value) ); diff --git a/src/core/ibc/msgs/client/MsgUpdateClient.ts b/src/core/ibc/msgs/client/MsgUpdateClient.ts index 9efb58e8e..f3e4550c8 100644 --- a/src/core/ibc/msgs/client/MsgUpdateClient.ts +++ b/src/core/ibc/msgs/client/MsgUpdateClient.ts @@ -24,8 +24,9 @@ export class MsgUpdateClient extends JSONSerializable< super(); } - public static fromAmino(_: any): MsgUpdateClient { + public static fromAmino(_: any, isClassic?: boolean): MsgUpdateClient { _; + isClassic; throw new Error('Amino not supported'); } @@ -33,7 +34,11 @@ export class MsgUpdateClient extends JSONSerializable< throw new Error('Amino not supported'); } - public static fromData(data: MsgUpdateClient.Data): MsgUpdateClient { + public static fromData( + data: MsgUpdateClient.Data, + _?: boolean + ): MsgUpdateClient { + _; const { client_id, header, signer } = data; return new MsgUpdateClient( client_id, @@ -42,7 +47,8 @@ export class MsgUpdateClient extends JSONSerializable< ); } - public toData(): MsgUpdateClient.Data { + public toData(_?: boolean): MsgUpdateClient.Data { + _; const { client_id, header, signer } = this; return { '@type': '/ibc.core.client.v1.MsgUpdateClient', @@ -52,7 +58,11 @@ export class MsgUpdateClient extends JSONSerializable< }; } - public static fromProto(proto: MsgUpdateClient.Proto): MsgUpdateClient { + public static fromProto( + proto: MsgUpdateClient.Proto, + _?: boolean + ): MsgUpdateClient { + _; return new MsgUpdateClient( proto.clientId, proto.header ? Header.unpackAny(proto.header) : undefined, @@ -60,7 +70,8 @@ export class MsgUpdateClient extends JSONSerializable< ); } - public toProto(): MsgUpdateClient.Proto { + public toProto(_?: boolean): MsgUpdateClient.Proto { + _; const { client_id, header, signer } = this; return MsgUpdateClient_pb.fromPartial({ clientId: client_id, @@ -69,14 +80,16 @@ export class MsgUpdateClient extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/ibc.core.client.v1.MsgUpdateClient', value: MsgUpdateClient_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgUpdateClient { + public static unpackAny(msgAny: Any, _?: boolean): MsgUpdateClient { + _; return MsgUpdateClient.fromProto(MsgUpdateClient_pb.decode(msgAny.value)); } } diff --git a/src/core/ibc/msgs/client/MsgUpgradeClient.ts b/src/core/ibc/msgs/client/MsgUpgradeClient.ts index d762cfc2f..085c65382 100644 --- a/src/core/ibc/msgs/client/MsgUpgradeClient.ts +++ b/src/core/ibc/msgs/client/MsgUpgradeClient.ts @@ -29,16 +29,22 @@ export class MsgUpgradeClient extends JSONSerializable< super(); } - public static fromAmino(_: any): MsgUpgradeClient { + public static fromAmino(_: any, isClassic?: boolean): MsgUpgradeClient { _; + isClassic; throw new Error('Amino not supported'); } - public toAmino(): any { + public toAmino(_?: boolean): any { + _; throw new Error('Amino not supported'); } - public static fromData(data: MsgUpgradeClient.Data): MsgUpgradeClient { + public static fromData( + data: MsgUpgradeClient.Data, + _?: boolean + ): MsgUpgradeClient { + _; const { client_id, client_state, @@ -57,7 +63,8 @@ export class MsgUpgradeClient extends JSONSerializable< ); } - public toData(): MsgUpgradeClient.Data { + public toData(_?: boolean): MsgUpgradeClient.Data { + _; const { client_id, client_state, @@ -77,7 +84,11 @@ export class MsgUpgradeClient extends JSONSerializable< }; } - public static fromProto(proto: MsgUpgradeClient.Proto): MsgUpgradeClient { + public static fromProto( + proto: MsgUpgradeClient.Proto, + _?: boolean + ): MsgUpgradeClient { + _; return new MsgUpgradeClient( proto.clientId, proto.clientState, @@ -88,7 +99,8 @@ export class MsgUpgradeClient extends JSONSerializable< ); } - public toProto(): MsgUpgradeClient.Proto { + public toProto(_?: boolean): MsgUpgradeClient.Proto { + _; const { client_id, client_state, @@ -110,14 +122,16 @@ export class MsgUpgradeClient extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/ibc.core.client.v1.MsgUpgradeClient', value: MsgUpgradeClient_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgUpgradeClient { + public static unpackAny(msgAny: Any, _?: boolean): MsgUpgradeClient { + _; return MsgUpgradeClient.fromProto(MsgUpgradeClient_pb.decode(msgAny.value)); } } diff --git a/src/core/ibc/msgs/connection/MsgConnectionOpenAck.ts b/src/core/ibc/msgs/connection/MsgConnectionOpenAck.ts index 4f719d86d..353ffeaee 100644 --- a/src/core/ibc/msgs/connection/MsgConnectionOpenAck.ts +++ b/src/core/ibc/msgs/connection/MsgConnectionOpenAck.ts @@ -41,18 +41,22 @@ export class MsgConnectionOpenAck extends JSONSerializable< super(); } - public static fromAmino(_: any): MsgConnectionOpenAck { + public static fromAmino(_: any, isClassic?: boolean): MsgConnectionOpenAck { _; + isClassic; throw new Error('Amino not supported'); } - public toAmino(): any { + public toAmino(_?: boolean): any { + _; throw new Error('Amino not supported'); } public static fromData( - data: MsgConnectionOpenAck.Data + data: MsgConnectionOpenAck.Data, + _?: boolean ): MsgConnectionOpenAck { + _; const { connection_id, counterparty_connection_id, @@ -79,7 +83,8 @@ export class MsgConnectionOpenAck extends JSONSerializable< ); } - public toData(): MsgConnectionOpenAck.Data { + public toData(_?: boolean): MsgConnectionOpenAck.Data { + _; const { connection_id, counterparty_connection_id, @@ -110,8 +115,10 @@ export class MsgConnectionOpenAck extends JSONSerializable< } public static fromProto( - proto: MsgConnectionOpenAck.Proto + proto: MsgConnectionOpenAck.Proto, + _?: boolean ): MsgConnectionOpenAck { + _; return new MsgConnectionOpenAck( proto.connectionId, proto.counterpartyConnectionId, @@ -128,7 +135,8 @@ export class MsgConnectionOpenAck extends JSONSerializable< ); } - public toProto(): MsgConnectionOpenAck.Proto { + public toProto(_?: boolean): MsgConnectionOpenAck.Proto { + _; const { connection_id, counterparty_connection_id, @@ -157,14 +165,16 @@ export class MsgConnectionOpenAck extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/ibc.core.connection.v1.MsgConnectionOpenAck', value: MsgConnectionOpenAck_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgConnectionOpenAck { + public static unpackAny(msgAny: Any, _?: boolean): MsgConnectionOpenAck { + _; return MsgConnectionOpenAck.fromProto( MsgConnectionOpenAck_pb.decode(msgAny.value) ); diff --git a/src/core/ibc/msgs/connection/MsgConnectionOpenConfirm.ts b/src/core/ibc/msgs/connection/MsgConnectionOpenConfirm.ts index 5aaa8be6d..f281b9bb6 100644 --- a/src/core/ibc/msgs/connection/MsgConnectionOpenConfirm.ts +++ b/src/core/ibc/msgs/connection/MsgConnectionOpenConfirm.ts @@ -28,18 +28,25 @@ export class MsgConnectionOpenConfirm extends JSONSerializable< super(); } - public static fromAmino(_: any): MsgConnectionOpenConfirm { + public static fromAmino( + _: any, + isClassic?: boolean + ): MsgConnectionOpenConfirm { _; + isClassic; throw new Error('Amino not supported'); } - public toAmino(): any { + public toAmino(_?: boolean): any { + _; throw new Error('Amino not supported'); } public static fromData( - data: MsgConnectionOpenConfirm.Data + data: MsgConnectionOpenConfirm.Data, + _?: boolean ): MsgConnectionOpenConfirm { + _; const { connection_id, proof_ack, proof_height, signer } = data; return new MsgConnectionOpenConfirm( connection_id, @@ -49,7 +56,8 @@ export class MsgConnectionOpenConfirm extends JSONSerializable< ); } - public toData(): MsgConnectionOpenConfirm.Data { + public toData(_?: boolean): MsgConnectionOpenConfirm.Data { + _; const { connection_id, proof_ack, proof_height, signer } = this; return { '@type': '/ibc.core.connection.v1.MsgConnectionOpenConfirm', @@ -61,8 +69,10 @@ export class MsgConnectionOpenConfirm extends JSONSerializable< } public static fromProto( - proto: MsgConnectionOpenConfirm.Proto + proto: MsgConnectionOpenConfirm.Proto, + _?: boolean ): MsgConnectionOpenConfirm { + _; return new MsgConnectionOpenConfirm( proto.connectionId, Buffer.from(proto.proofAck).toString('base64'), @@ -71,7 +81,8 @@ export class MsgConnectionOpenConfirm extends JSONSerializable< ); } - public toProto(): MsgConnectionOpenConfirm.Proto { + public toProto(_?: boolean): MsgConnectionOpenConfirm.Proto { + _; const { connection_id, proof_ack, proof_height, signer } = this; return MsgConnectionOpenConfirm_pb.fromPartial({ connectionId: connection_id, @@ -81,14 +92,16 @@ export class MsgConnectionOpenConfirm extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/ibc.core.connection.v1.MsgConnectionOpenConfirm', value: MsgConnectionOpenConfirm_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgConnectionOpenConfirm { + public static unpackAny(msgAny: Any, _?: boolean): MsgConnectionOpenConfirm { + _; return MsgConnectionOpenConfirm.fromProto( MsgConnectionOpenConfirm_pb.decode(msgAny.value) ); diff --git a/src/core/ibc/msgs/connection/MsgConnectionOpenInit.ts b/src/core/ibc/msgs/connection/MsgConnectionOpenInit.ts index 04d9666be..d55e1a7ad 100644 --- a/src/core/ibc/msgs/connection/MsgConnectionOpenInit.ts +++ b/src/core/ibc/msgs/connection/MsgConnectionOpenInit.ts @@ -41,18 +41,22 @@ export class MsgConnectionOpenInit extends JSONSerializable< this.version = version; } - public static fromAmino(_: any): MsgConnectionOpenInit { + public static fromAmino(_: any, isClassic?: boolean): MsgConnectionOpenInit { _; + isClassic; throw new Error('Amino not supported'); } - public toAmino(): any { + public toAmino(_?: boolean): any { + _; throw new Error('Amino not supported'); } public static fromData( - data: MsgConnectionOpenInit.Data + data: MsgConnectionOpenInit.Data, + _?: boolean ): MsgConnectionOpenInit { + _; const { client_id, counterparty, version, delay_period, signer } = data; return new MsgConnectionOpenInit( client_id, @@ -63,7 +67,8 @@ export class MsgConnectionOpenInit extends JSONSerializable< ); } - public toData(): MsgConnectionOpenInit.Data { + public toData(_?: boolean): MsgConnectionOpenInit.Data { + _; const { client_id, counterparty, version, delay_period, signer } = this; return { '@type': '/ibc.core.connection.v1.MsgConnectionOpenInit', @@ -76,8 +81,10 @@ export class MsgConnectionOpenInit extends JSONSerializable< } public static fromProto( - proto: MsgConnectionOpenInit.Proto + proto: MsgConnectionOpenInit.Proto, + _?: boolean ): MsgConnectionOpenInit { + _; return new MsgConnectionOpenInit( proto.clientId, proto.delayPeriod.toNumber(), @@ -89,7 +96,8 @@ export class MsgConnectionOpenInit extends JSONSerializable< ); } - public toProto(): MsgConnectionOpenInit.Proto { + public toProto(_?: boolean): MsgConnectionOpenInit.Proto { + _; const { client_id, counterparty, version, delay_period, signer } = this; return MsgConnectionOpenInit_pb.fromPartial({ clientId: client_id, @@ -100,14 +108,16 @@ export class MsgConnectionOpenInit extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/ibc.core.connection.v1.MsgConnectionOpenInit', value: MsgConnectionOpenInit_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgConnectionOpenInit { + public static unpackAny(msgAny: Any, _?: boolean): MsgConnectionOpenInit { + _; return MsgConnectionOpenInit.fromProto( MsgConnectionOpenInit_pb.decode(msgAny.value) ); diff --git a/src/core/ibc/msgs/connection/MsgConnectionOpenTry.ts b/src/core/ibc/msgs/connection/MsgConnectionOpenTry.ts index 3919619ba..7a6ed3cad 100644 --- a/src/core/ibc/msgs/connection/MsgConnectionOpenTry.ts +++ b/src/core/ibc/msgs/connection/MsgConnectionOpenTry.ts @@ -46,18 +46,22 @@ export class MsgConnectionOpenTry extends JSONSerializable< super(); } - public static fromAmino(_: any): MsgConnectionOpenTry { + public static fromAmino(_: any, isClassic?: boolean): MsgConnectionOpenTry { _; + isClassic; throw new Error('Amino not supported'); } - public toAmino(): any { + public toAmino(_?: boolean): any { + _; throw new Error('Amino not supported'); } public static fromData( - data: MsgConnectionOpenTry.Data + data: MsgConnectionOpenTry.Data, + _?: boolean ): MsgConnectionOpenTry { + _; const { client_id, previous_connection_id, @@ -90,7 +94,8 @@ export class MsgConnectionOpenTry extends JSONSerializable< ); } - public toData(): MsgConnectionOpenTry.Data { + public toData(_?: boolean): MsgConnectionOpenTry.Data { + _; const { client_id, previous_connection_id, @@ -128,8 +133,10 @@ export class MsgConnectionOpenTry extends JSONSerializable< } public static fromProto( - proto: MsgConnectionOpenTry.Proto + proto: MsgConnectionOpenTry.Proto, + _?: boolean ): MsgConnectionOpenTry { + _; return new MsgConnectionOpenTry( proto.clientId, proto.previousConnectionId, @@ -152,7 +159,8 @@ export class MsgConnectionOpenTry extends JSONSerializable< ); } - public toProto(): MsgConnectionOpenTry.Proto { + public toProto(_?: boolean): MsgConnectionOpenTry.Proto { + _; const { client_id, previous_connection_id, @@ -188,14 +196,16 @@ export class MsgConnectionOpenTry extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/ibc.core.connection.v1.MsgConnectionOpenTry', value: MsgConnectionOpenTry_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgConnectionOpenTry { + public static unpackAny(msgAny: Any, _?: boolean): MsgConnectionOpenTry { + _; return MsgConnectionOpenTry.fromProto( MsgConnectionOpenTry_pb.decode(msgAny.value) ); diff --git a/src/core/ibc/proposals/ClientUpdateProposal.ts b/src/core/ibc/proposals/ClientUpdateProposal.ts index 27fece695..edd0595f6 100644 --- a/src/core/ibc/proposals/ClientUpdateProposal.ts +++ b/src/core/ibc/proposals/ClientUpdateProposal.ts @@ -31,8 +31,10 @@ export class ClientUpdateProposal extends JSONSerializable< } public static fromAmino( - data: ClientUpdateProposal.Amino + data: ClientUpdateProposal.Amino, + _?: boolean ): ClientUpdateProposal { + _; const { value: { title, description, subjectClientId, substituteClientId }, } = data; @@ -44,7 +46,8 @@ export class ClientUpdateProposal extends JSONSerializable< ); } - public toAmino(): ClientUpdateProposal.Amino { + public toAmino(_?: boolean): ClientUpdateProposal.Amino { + _; const { title, description, subjectClientId, substituteClientId } = this; return { type: 'ibc/ClientUpdateProposal', @@ -58,8 +61,10 @@ export class ClientUpdateProposal extends JSONSerializable< } public static fromData( - data: ClientUpdateProposal.Data + data: ClientUpdateProposal.Data, + _?: boolean ): ClientUpdateProposal { + _; const { title, description, subject_client_id, substitute_client_id } = data; return new ClientUpdateProposal( @@ -70,7 +75,8 @@ export class ClientUpdateProposal extends JSONSerializable< ); } - public toData(): ClientUpdateProposal.Data { + public toData(_?: boolean): ClientUpdateProposal.Data { + _; const { title, description, subjectClientId, substituteClientId } = this; return { '@type': '/ibc.core.client.v1.ClientUpdateProposal', @@ -82,8 +88,10 @@ export class ClientUpdateProposal extends JSONSerializable< } public static fromProto( - proto: ClientUpdateProposal.Proto + proto: ClientUpdateProposal.Proto, + _?: boolean ): ClientUpdateProposal { + _; return new ClientUpdateProposal( proto.title, proto.description, @@ -92,7 +100,8 @@ export class ClientUpdateProposal extends JSONSerializable< ); } - public toProto(): ClientUpdateProposal.Proto { + public toProto(_?: boolean): ClientUpdateProposal.Proto { + _; const { title, description, subjectClientId, substituteClientId } = this; return ClientUpdateProposal_pb.fromPartial({ subjectClientId, @@ -102,14 +111,16 @@ export class ClientUpdateProposal extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/ibc.core.client.v1.ClientUpdateProposal', value: ClientUpdateProposal_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): ClientUpdateProposal { + public static unpackAny(msgAny: Any, _?: boolean): ClientUpdateProposal { + _; return ClientUpdateProposal.fromProto( ClientUpdateProposal_pb.decode(msgAny.value) ); diff --git a/src/core/index.ts b/src/core/index.ts index 7760d2cbc..c5a4bfe80 100644 --- a/src/core/index.ts +++ b/src/core/index.ts @@ -17,7 +17,11 @@ export * from './MultiSignature'; // Auth export * from './auth/Account'; export * from './auth/BaseAccount'; +export * from './auth/BaseVestingAccount'; export * from './auth/LazyGradedVestingAccount'; +export * from './auth/DelayedVestingAccount'; +export * from './auth/ContinuousVestingAccount'; +export * from './auth/PeriodicVestingAccount'; // Bank export * from './bank/msgs'; @@ -74,7 +78,7 @@ export * from './ibc/msgs/client'; export * from './ibc/msgs/connection'; // IBC-transfer -export * from './ibc-transfer/msgs'; +export * from './ibc/applications/transfer'; // bech32 types export * from './bech32'; diff --git a/src/core/market/msgs/MsgSwap.spec.ts b/src/core/market/msgs/MsgSwap.spec.ts index 69df0df19..6b6cbada7 100644 --- a/src/core/market/msgs/MsgSwap.spec.ts +++ b/src/core/market/msgs/MsgSwap.spec.ts @@ -6,8 +6,8 @@ describe('MsgSwap', () => { MsgSwapAmino.txs.forEach((txinfo: any) => { txinfo.tx.value.msg.forEach((msg: any) => { if (msg.type == 'market/MsgSwap') { - const e = MsgSwap.fromAmino(msg); - expect(e.toAmino()).toEqual(msg); + const e = MsgSwap.fromAmino(msg, true); + expect(e.toAmino(true)).toEqual(msg); } }); }); diff --git a/src/core/market/msgs/MsgSwap.ts b/src/core/market/msgs/MsgSwap.ts index 0a491874a..b04ea04dd 100644 --- a/src/core/market/msgs/MsgSwap.ts +++ b/src/core/market/msgs/MsgSwap.ts @@ -2,8 +2,8 @@ import { JSONSerializable } from '../../../util/json'; import { Coin } from '../../Coin'; import { Denom } from '../../Denom'; import { AccAddress } from '../../bech32'; -import { MsgSwap as MsgSwap_pb } from '@terra-money/terra.proto/terra/market/v1beta1/tx'; -import { Any } from '@terra-money/terra.proto/google/protobuf/any'; +import { MsgSwap as MsgSwap_pb } from '@terra-money/legacy.proto/terra/market/v1beta1/tx'; +import { Any } from '@terra-money/legacy.proto/google/protobuf/any'; /** * Executes a market swap between 2 denominations at the exchange rate registered by the @@ -28,14 +28,20 @@ export class MsgSwap extends JSONSerializable< super(); } - public static fromAmino(data: MsgSwap.Amino): MsgSwap { + public static fromAmino(data: MsgSwap.Amino, isClassic?: boolean): MsgSwap { + if (!isClassic) { + throw new Error('Not supported for the network'); + } const { value: { trader, offer_coin, ask_denom }, } = data; return new MsgSwap(trader, Coin.fromAmino(offer_coin), ask_denom); } - public toAmino(): MsgSwap.Amino { + public toAmino(isClassic?: boolean): MsgSwap.Amino { + if (!isClassic) { + throw new Error('Not supported for the network'); + } const { trader, offer_coin, ask_denom } = this; return { type: 'market/MsgSwap', @@ -47,7 +53,10 @@ export class MsgSwap extends JSONSerializable< }; } - public static fromProto(proto: MsgSwap.Proto): MsgSwap { + public static fromProto(proto: MsgSwap.Proto, isClassic?: boolean): MsgSwap { + if (!isClassic) { + throw new Error('Not supported for the network'); + } return new MsgSwap( proto.trader, Coin.fromProto(proto.offerCoin as Coin.Proto), @@ -55,7 +64,10 @@ export class MsgSwap extends JSONSerializable< ); } - public toProto(): MsgSwap.Proto { + public toProto(isClassic?: boolean): MsgSwap.Proto { + if (!isClassic) { + throw new Error('Not supported for the network'); + } const { trader, offer_coin, ask_denom } = this; return MsgSwap_pb.fromPartial({ askDenom: ask_denom, @@ -64,23 +76,35 @@ export class MsgSwap extends JSONSerializable< }); } - public packAny(): Any { + public packAny(isClassic?: boolean): Any { + if (!isClassic) { + throw new Error('Not supported for the network'); + } return Any.fromPartial({ typeUrl: '/terra.market.v1beta1.MsgSwap', value: MsgSwap_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgSwap { + public static unpackAny(msgAny: Any, isClassic?: boolean): MsgSwap { + if (!isClassic) { + throw new Error('Not supported for the network'); + } return MsgSwap.fromProto(MsgSwap_pb.decode(msgAny.value)); } - public static fromData(data: MsgSwap.Data): MsgSwap { + public static fromData(data: MsgSwap.Data, isClassic?: boolean): MsgSwap { + if (!isClassic) { + throw new Error('Not supported for the network'); + } const { trader, offer_coin, ask_denom } = data; return new MsgSwap(trader, Coin.fromData(offer_coin), ask_denom); } - public toData(): MsgSwap.Data { + public toData(isClassic?: boolean): MsgSwap.Data { + if (!isClassic) { + throw new Error('Not supported for the network'); + } const { trader, offer_coin, ask_denom } = this; return { '@type': '/terra.market.v1beta1.MsgSwap', diff --git a/src/core/market/msgs/MsgSwapSend.data.json b/src/core/market/msgs/MsgSwapSend.data.json index 6927bb947..f749e8ad5 100644 --- a/src/core/market/msgs/MsgSwapSend.data.json +++ b/src/core/market/msgs/MsgSwapSend.data.json @@ -4,114 +4,128 @@ "page_number": "1", "page_total": "819", "limit": "5", - "txs": [{ + "txs": [ + { "height": "326", "txhash": "E8A2B7E44855D1B12124212A3C8DD64E90BBFFEDAEE24AF1D96650349E23AF3D", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3" - }, - { - "key": "sender", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "module", - "value": "market" - }, - { - "key": "action", - "value": "swap" - } - ] - }, - { - "type": "swap", - "attributes": [{ - "key": "offer", - "value": "57000000umnt" - }, - { - "key": "trader", - "value": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3" - }, - { - "key": "swap_coin", - "value": "24050705ukrw" - }, - { - "key": "swap_fee", - "value": "490831.002051439156028897ukrw" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "amount", - "value": "57000000umnt" - }, - { - "key": "recipient", - "value": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3" - }, - { - "key": "amount", - "value": "24050705ukrw" - } - ] - } - ] - }], + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3" + }, + { + "key": "sender", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "module", + "value": "market" + }, + { + "key": "action", + "value": "swap" + } + ] + }, + { + "type": "swap", + "attributes": [ + { + "key": "offer", + "value": "57000000umnt" + }, + { + "key": "trader", + "value": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3" + }, + { + "key": "swap_coin", + "value": "24050705ukrw" + }, + { + "key": "swap_fee", + "value": "490831.002051439156028897ukrw" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "amount", + "value": "57000000umnt" + }, + { + "key": "recipient", + "value": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3" + }, + { + "key": "amount", + "value": "24050705ukrw" + } + ] + } + ] + } + ], "gas_wanted": "195066", "gas_used": "130181", "tx": { "type": "core/StdTx", "value": { - "msg": [{ - "type": "market/MsgSwapSend", - "value": { - "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", - "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", - "offer_coin": { - "denom": "umnt", - "amount": "57000000" - }, - "ask_denom": "ukrw" + "msg": [ + { + "type": "market/MsgSwapSend", + "value": { + "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", + "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", + "offer_coin": { + "denom": "umnt", + "amount": "57000000" + }, + "ask_denom": "ukrw" + } } - }], + ], "fee": { - "amount": [{ - "denom": "umnt", - "amount": "2926" - }], + "amount": [ + { + "denom": "umnt", + "amount": "2926" + } + ], "gas": "195066" }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "AhgXtBdqnAQliQucPcEHjKUPqulHnCYiM1wiNfLI1lN6" - }, - "signature": "XWRfiGk6YdMQjyMalU9R3p0TJFkA/W49v7GNkWa7YHo4ymMsEhu586d9XmgUJOIuVQcS98MgKsT0PQmzOC2ttw==" - }], + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AhgXtBdqnAQliQucPcEHjKUPqulHnCYiM1wiNfLI1lN6" + }, + "signature": "XWRfiGk6YdMQjyMalU9R3p0TJFkA/W49v7GNkWa7YHo4ymMsEhu586d9XmgUJOIuVQcS98MgKsT0PQmzOC2ttw==" + } + ], "memo": "" } }, "timestamp": "2019-12-13T17:34:31Z", - "events": [{ + "events": [ + { "type": "message", - "attributes": [{ + "attributes": [ + { "key": "sender", "value": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3" }, @@ -131,7 +145,8 @@ }, { "type": "swap", - "attributes": [{ + "attributes": [ + { "key": "offer", "value": "57000000umnt" }, @@ -151,7 +166,8 @@ }, { "type": "transfer", - "attributes": [{ + "attributes": [ + { "key": "recipient", "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" }, @@ -174,111 +190,124 @@ { "height": "454", "txhash": "DFACB9E2627EC5DE9D608292B1633759B9C17E056AA094F0AAE3F261E2EBA412", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1x04xgtwlw72gtfzrq7nfwmr6eexla8ecljw28z" - }, - { - "key": "sender", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "module", - "value": "market" - }, - { - "key": "action", - "value": "swap" - } - ] - }, - { - "type": "swap", - "attributes": [{ - "key": "offer", - "value": "20000000000000usdr" - }, - { - "key": "trader", - "value": "terra1x04xgtwlw72gtfzrq7nfwmr6eexla8ecljw28z" - }, - { - "key": "swap_coin", - "value": "32439391167750001ukrw" - }, - { - "key": "swap_fee", - "value": "81301732250000.231789846099249931ukrw" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "amount", - "value": "20000000000000usdr" - }, - { - "key": "recipient", - "value": "terra1x04xgtwlw72gtfzrq7nfwmr6eexla8ecljw28z" - }, - { - "key": "amount", - "value": "32439391167750001ukrw" - } - ] - } - ] - }], + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1x04xgtwlw72gtfzrq7nfwmr6eexla8ecljw28z" + }, + { + "key": "sender", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "module", + "value": "market" + }, + { + "key": "action", + "value": "swap" + } + ] + }, + { + "type": "swap", + "attributes": [ + { + "key": "offer", + "value": "20000000000000usdr" + }, + { + "key": "trader", + "value": "terra1x04xgtwlw72gtfzrq7nfwmr6eexla8ecljw28z" + }, + { + "key": "swap_coin", + "value": "32439391167750001ukrw" + }, + { + "key": "swap_fee", + "value": "81301732250000.231789846099249931ukrw" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "amount", + "value": "20000000000000usdr" + }, + { + "key": "recipient", + "value": "terra1x04xgtwlw72gtfzrq7nfwmr6eexla8ecljw28z" + }, + { + "key": "amount", + "value": "32439391167750001ukrw" + } + ] + } + ] + } + ], "gas_wanted": "147866", "gas_used": "97971", "tx": { "type": "core/StdTx", "value": { - "msg": [{ - "type": "market/MsgSwapSend", - "value": { - "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", - "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", - "offer_coin": { - "denom": "usdr", - "amount": "20000000000000" - }, - "ask_denom": "ukrw" + "msg": [ + { + "type": "market/MsgSwapSend", + "value": { + "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", + "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", + "offer_coin": { + "denom": "usdr", + "amount": "20000000000000" + }, + "ask_denom": "ukrw" + } } - }], + ], "fee": { - "amount": [{ - "denom": "usdr", - "amount": "2218" - }], + "amount": [ + { + "denom": "usdr", + "amount": "2218" + } + ], "gas": "147866" }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "AicpkF0TsblNBidhnZmvy6rV0BKK1GxiAxugU7Vhap/G" - }, - "signature": "ngemHEDrfmW6xDARVaf7Du6AZCU5m3xOOb48pYeX+RgpVmPbsOP+YTtBAKpXJvwnHWcMXc1pJTQ3o4IGRt2alQ==" - }], + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AicpkF0TsblNBidhnZmvy6rV0BKK1GxiAxugU7Vhap/G" + }, + "signature": "ngemHEDrfmW6xDARVaf7Du6AZCU5m3xOOb48pYeX+RgpVmPbsOP+YTtBAKpXJvwnHWcMXc1pJTQ3o4IGRt2alQ==" + } + ], "memo": "" } }, "timestamp": "2019-12-13T17:49:17Z", - "events": [{ + "events": [ + { "type": "message", - "attributes": [{ + "attributes": [ + { "key": "sender", "value": "terra1x04xgtwlw72gtfzrq7nfwmr6eexla8ecljw28z" }, @@ -298,7 +327,8 @@ }, { "type": "swap", - "attributes": [{ + "attributes": [ + { "key": "offer", "value": "20000000000000usdr" }, @@ -318,7 +348,8 @@ }, { "type": "transfer", - "attributes": [{ + "attributes": [ + { "key": "recipient", "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" }, @@ -341,111 +372,124 @@ { "height": "644", "txhash": "E64F46827A740B471E86DB568E5D8448E3A885D91728510D64A9E02033748B97", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" - }, - { - "key": "sender", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "module", - "value": "market" - }, - { - "key": "action", - "value": "swap" - } - ] - }, - { - "type": "swap", - "attributes": [{ - "key": "offer", - "value": "1000000ukrw" - }, - { - "key": "trader", - "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" - }, - { - "key": "swap_coin", - "value": "3056uluna" - }, - { - "key": "swap_fee", - "value": "62.989447419036158528uluna" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "amount", - "value": "1000000ukrw" - }, - { - "key": "recipient", - "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" - }, - { - "key": "amount", - "value": "3056uluna" - } - ] - } - ] - }], + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, + { + "key": "sender", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "module", + "value": "market" + }, + { + "key": "action", + "value": "swap" + } + ] + }, + { + "type": "swap", + "attributes": [ + { + "key": "offer", + "value": "1000000ukrw" + }, + { + "key": "trader", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, + { + "key": "swap_coin", + "value": "3056uluna" + }, + { + "key": "swap_fee", + "value": "62.989447419036158528uluna" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "amount", + "value": "1000000ukrw" + }, + { + "key": "recipient", + "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" + }, + { + "key": "amount", + "value": "3056uluna" + } + ] + } + ] + } + ], "gas_wanted": "155933", "gas_used": "103300", "tx": { "type": "core/StdTx", "value": { - "msg": [{ - "type": "market/MsgSwapSend", - "value": { - "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", - "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", - "offer_coin": { - "denom": "ukrw", - "amount": "1000000" - }, - "ask_denom": "uluna" + "msg": [ + { + "type": "market/MsgSwapSend", + "value": { + "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", + "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", + "offer_coin": { + "denom": "ukrw", + "amount": "1000000" + }, + "ask_denom": "uluna" + } } - }], + ], "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "2339" - }], + "amount": [ + { + "denom": "ukrw", + "amount": "2339" + } + ], "gas": "155933" }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "A5CDIb12doIQR5vbiqPsVOcexPO+fOPR5E7ioVcv7+mf" - }, - "signature": "eIW78Itw09YHTUeWCD3UAsM9bP0UFjLUrrIG9rWe4cc/ufUM9D3yMYjZr0aT74l/jWbOCY8DecfdCrydL+re2Q==" - }], + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A5CDIb12doIQR5vbiqPsVOcexPO+fOPR5E7ioVcv7+mf" + }, + "signature": "eIW78Itw09YHTUeWCD3UAsM9bP0UFjLUrrIG9rWe4cc/ufUM9D3yMYjZr0aT74l/jWbOCY8DecfdCrydL+re2Q==" + } + ], "memo": "" } }, "timestamp": "2019-12-13T18:10:59Z", - "events": [{ + "events": [ + { "type": "message", - "attributes": [{ + "attributes": [ + { "key": "sender", "value": "terra1srw9p49fa46fw6asp0ttrr3cj8evmj3098jdej" }, @@ -465,7 +509,8 @@ }, { "type": "swap", - "attributes": [{ + "attributes": [ + { "key": "offer", "value": "1000000ukrw" }, @@ -485,7 +530,8 @@ }, { "type": "transfer", - "attributes": [{ + "attributes": [ + { "key": "recipient", "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" }, @@ -508,111 +554,124 @@ { "height": "755", "txhash": "F3AF85ACDE3211B0C1823BEA29418AEA9026169E027ACD86FC7391348F8CE0BE", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra15krj23pg8t4krd7t3lkhjq4jtkgg8mfp3m58l2" - }, - { - "key": "sender", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "module", - "value": "market" - }, - { - "key": "action", - "value": "swap" - } - ] - }, - { - "type": "swap", - "attributes": [{ - "key": "offer", - "value": "468000000ukrw" - }, - { - "key": "trader", - "value": "terra15krj23pg8t4krd7t3lkhjq4jtkgg8mfp3m58l2" - }, - { - "key": "swap_coin", - "value": "1432131uluna" - }, - { - "key": "swap_fee", - "value": "29227.313817330210772834uluna" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "amount", - "value": "468000000ukrw" - }, - { - "key": "recipient", - "value": "terra15krj23pg8t4krd7t3lkhjq4jtkgg8mfp3m58l2" - }, - { - "key": "amount", - "value": "1432131uluna" - } - ] - } - ] - }], + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra15krj23pg8t4krd7t3lkhjq4jtkgg8mfp3m58l2" + }, + { + "key": "sender", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "module", + "value": "market" + }, + { + "key": "action", + "value": "swap" + } + ] + }, + { + "type": "swap", + "attributes": [ + { + "key": "offer", + "value": "468000000ukrw" + }, + { + "key": "trader", + "value": "terra15krj23pg8t4krd7t3lkhjq4jtkgg8mfp3m58l2" + }, + { + "key": "swap_coin", + "value": "1432131uluna" + }, + { + "key": "swap_fee", + "value": "29227.313817330210772834uluna" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "amount", + "value": "468000000ukrw" + }, + { + "key": "recipient", + "value": "terra15krj23pg8t4krd7t3lkhjq4jtkgg8mfp3m58l2" + }, + { + "key": "amount", + "value": "1432131uluna" + } + ] + } + ] + } + ], "gas_wanted": "155266", "gas_used": "102786", "tx": { "type": "core/StdTx", "value": { - "msg": [{ - "type": "market/MsgSwapSend", - "value": { - "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", - "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", - "offer_coin": { - "denom": "ukrw", - "amount": "468000000" - }, - "ask_denom": "uluna" + "msg": [ + { + "type": "market/MsgSwapSend", + "value": { + "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", + "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", + "offer_coin": { + "denom": "ukrw", + "amount": "468000000" + }, + "ask_denom": "uluna" + } } - }], + ], "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "2329" - }], + "amount": [ + { + "denom": "ukrw", + "amount": "2329" + } + ], "gas": "155266" }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "Ap1s+mF9dHf6tIJRie2xszMyqx8hYt5pa4kpoprfHrdM" - }, - "signature": "OyqhxYEjFjr7VIYp//WVW4hJeUO9BJOl5IxfLoOl9yEVN+lk4/e9yZrEg9IkNwXPQm18J7o63/pA38krWUQ0Wg==" - }], + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Ap1s+mF9dHf6tIJRie2xszMyqx8hYt5pa4kpoprfHrdM" + }, + "signature": "OyqhxYEjFjr7VIYp//WVW4hJeUO9BJOl5IxfLoOl9yEVN+lk4/e9yZrEg9IkNwXPQm18J7o63/pA38krWUQ0Wg==" + } + ], "memo": "" } }, "timestamp": "2019-12-13T18:23:17Z", - "events": [{ + "events": [ + { "type": "message", - "attributes": [{ + "attributes": [ + { "key": "sender", "value": "terra15krj23pg8t4krd7t3lkhjq4jtkgg8mfp3m58l2" }, @@ -632,7 +691,8 @@ }, { "type": "swap", - "attributes": [{ + "attributes": [ + { "key": "offer", "value": "468000000ukrw" }, @@ -652,7 +712,8 @@ }, { "type": "transfer", - "attributes": [{ + "attributes": [ + { "key": "recipient", "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" }, @@ -675,111 +736,124 @@ { "height": "899", "txhash": "A24E13091B4FA81044E7849C524599E504F755A52BB03459A6A2CA07DD7A38A3", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" - }, - { - "key": "sender", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "module", - "value": "market" - }, - { - "key": "action", - "value": "swap" - } - ] - }, - { - "type": "swap", - "attributes": [{ - "key": "offer", - "value": "1350147usdr" - }, - { - "key": "trader", - "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" - }, - { - "key": "swap_coin", - "value": "6710226uluna" - }, - { - "key": "swap_fee", - "value": "136944.004784803505397649uluna" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "amount", - "value": "1350147usdr" - }, - { - "key": "recipient", - "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" - }, - { - "key": "amount", - "value": "6710226uluna" - } - ] - } - ] - }], + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "sender", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "module", + "value": "market" + }, + { + "key": "action", + "value": "swap" + } + ] + }, + { + "type": "swap", + "attributes": [ + { + "key": "offer", + "value": "1350147usdr" + }, + { + "key": "trader", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "swap_coin", + "value": "6710226uluna" + }, + { + "key": "swap_fee", + "value": "136944.004784803505397649uluna" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "amount", + "value": "1350147usdr" + }, + { + "key": "recipient", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "amount", + "value": "6710226uluna" + } + ] + } + ] + } + ], "gas_wanted": "145266", "gas_used": "96240", "tx": { "type": "core/StdTx", "value": { - "msg": [{ - "type": "market/MsgSwapSend", - "value": { - "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", - "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", - "offer_coin": { - "denom": "usdr", - "amount": "1350147" - }, - "ask_denom": "uluna" + "msg": [ + { + "type": "market/MsgSwapSend", + "value": { + "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", + "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", + "offer_coin": { + "denom": "usdr", + "amount": "1350147" + }, + "ask_denom": "uluna" + } } - }], + ], "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "2179" - }], + "amount": [ + { + "denom": "ukrw", + "amount": "2179" + } + ], "gas": "145266" }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "AgfYBjlvfQtwveh1VkpLc2Es0sw/KqkYo56g7EGGzQcB" - }, - "signature": "wkFJ7DI/WrrcEQbgOicfhPQB/UQUXLnqo4caoS0kki4g6VHhJKYiUs789GyvgyFxL92WgS+neIeFVFMMYJwQ8g==" - }], + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AgfYBjlvfQtwveh1VkpLc2Es0sw/KqkYo56g7EGGzQcB" + }, + "signature": "wkFJ7DI/WrrcEQbgOicfhPQB/UQUXLnqo4caoS0kki4g6VHhJKYiUs789GyvgyFxL92WgS+neIeFVFMMYJwQ8g==" + } + ], "memo": "" } }, "timestamp": "2019-12-13T18:39:08Z", - "events": [{ + "events": [ + { "type": "message", - "attributes": [{ + "attributes": [ + { "key": "sender", "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" }, @@ -799,7 +873,8 @@ }, { "type": "swap", - "attributes": [{ + "attributes": [ + { "key": "offer", "value": "1350147usdr" }, @@ -819,7 +894,8 @@ }, { "type": "transfer", - "attributes": [{ + "attributes": [ + { "key": "recipient", "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" }, @@ -842,111 +918,124 @@ { "height": "1328", "txhash": "F21A21AE157B264BACB9F3AAAE9CC0185873A0F3D6EB9C96C6C4368065AD708F", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1nywja8qykzgcva579tyuarglyv9dc75y8cyw3f" - }, - { - "key": "sender", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "module", - "value": "market" - }, - { - "key": "action", - "value": "swap" - } - ] - }, - { - "type": "swap", - "attributes": [{ - "key": "offer", - "value": "1240705458ukrw" - }, - { - "key": "trader", - "value": "terra1nywja8qykzgcva579tyuarglyv9dc75y8cyw3f" - }, - { - "key": "swap_coin", - "value": "3787823uluna" - }, - { - "key": "swap_fee", - "value": "77303.037383177570093458uluna" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "amount", - "value": "1240705458ukrw" - }, - { - "key": "recipient", - "value": "terra1nywja8qykzgcva579tyuarglyv9dc75y8cyw3f" - }, - { - "key": "amount", - "value": "3787823uluna" - } - ] - } - ] - }], + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1nywja8qykzgcva579tyuarglyv9dc75y8cyw3f" + }, + { + "key": "sender", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "module", + "value": "market" + }, + { + "key": "action", + "value": "swap" + } + ] + }, + { + "type": "swap", + "attributes": [ + { + "key": "offer", + "value": "1240705458ukrw" + }, + { + "key": "trader", + "value": "terra1nywja8qykzgcva579tyuarglyv9dc75y8cyw3f" + }, + { + "key": "swap_coin", + "value": "3787823uluna" + }, + { + "key": "swap_fee", + "value": "77303.037383177570093458uluna" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "amount", + "value": "1240705458ukrw" + }, + { + "key": "recipient", + "value": "terra1nywja8qykzgcva579tyuarglyv9dc75y8cyw3f" + }, + { + "key": "amount", + "value": "3787823uluna" + } + ] + } + ] + } + ], "gas_wanted": "150466", "gas_used": "100952", "tx": { "type": "core/StdTx", "value": { - "msg": [{ - "type": "market/MsgSwapSend", - "value": { - "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", - "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", - "offer_coin": { - "denom": "ukrw", - "amount": "1240705458" - }, - "ask_denom": "uluna" + "msg": [ + { + "type": "market/MsgSwapSend", + "value": { + "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", + "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", + "offer_coin": { + "denom": "ukrw", + "amount": "1240705458" + }, + "ask_denom": "uluna" + } } - }], + ], "fee": { - "amount": [{ - "denom": "uluna", - "amount": "2257" - }], + "amount": [ + { + "denom": "uluna", + "amount": "2257" + } + ], "gas": "150466" }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "Al4E+xICUrTA/YTMCqGne8BFmpreF+Xh9YsLV8y19ejC" - }, - "signature": "0pghuLibLmiQ9zOVIcpPz8qLK/35IF0T1J1abeM2Ygh4UoBL4hg+ShFevYFIYEXuxKyCsra3mI7GvFMpDYPWxQ==" - }], + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Al4E+xICUrTA/YTMCqGne8BFmpreF+Xh9YsLV8y19ejC" + }, + "signature": "0pghuLibLmiQ9zOVIcpPz8qLK/35IF0T1J1abeM2Ygh4UoBL4hg+ShFevYFIYEXuxKyCsra3mI7GvFMpDYPWxQ==" + } + ], "memo": "" } }, "timestamp": "2019-12-13T19:26:34Z", - "events": [{ + "events": [ + { "type": "message", - "attributes": [{ + "attributes": [ + { "key": "sender", "value": "terra1nywja8qykzgcva579tyuarglyv9dc75y8cyw3f" }, @@ -966,7 +1055,8 @@ }, { "type": "swap", - "attributes": [{ + "attributes": [ + { "key": "offer", "value": "1240705458ukrw" }, @@ -986,7 +1076,8 @@ }, { "type": "transfer", - "attributes": [{ + "attributes": [ + { "key": "recipient", "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" }, @@ -1009,111 +1100,124 @@ { "height": "1329", "txhash": "D82259173879E55D1A839645FD04C44CEB709A70FA900276E2471D75FF671DD9", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1rf9xakxf97a49qa5svsf7yypjswzkutqfclur8" - }, - { - "key": "sender", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "module", - "value": "market" - }, - { - "key": "action", - "value": "swap" - } - ] - }, - { - "type": "swap", - "attributes": [{ - "key": "offer", - "value": "199678000ukrw" - }, - { - "key": "trader", - "value": "terra1rf9xakxf97a49qa5svsf7yypjswzkutqfclur8" - }, - { - "key": "swap_coin", - "value": "609608uluna" - }, - { - "key": "swap_fee", - "value": "12441.844236760124610589uluna" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "amount", - "value": "199678000ukrw" - }, - { - "key": "recipient", - "value": "terra1rf9xakxf97a49qa5svsf7yypjswzkutqfclur8" - }, - { - "key": "amount", - "value": "609608uluna" - } - ] - } - ] - }], + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1rf9xakxf97a49qa5svsf7yypjswzkutqfclur8" + }, + { + "key": "sender", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "module", + "value": "market" + }, + { + "key": "action", + "value": "swap" + } + ] + }, + { + "type": "swap", + "attributes": [ + { + "key": "offer", + "value": "199678000ukrw" + }, + { + "key": "trader", + "value": "terra1rf9xakxf97a49qa5svsf7yypjswzkutqfclur8" + }, + { + "key": "swap_coin", + "value": "609608uluna" + }, + { + "key": "swap_fee", + "value": "12441.844236760124610589uluna" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "amount", + "value": "199678000ukrw" + }, + { + "key": "recipient", + "value": "terra1rf9xakxf97a49qa5svsf7yypjswzkutqfclur8" + }, + { + "key": "amount", + "value": "609608uluna" + } + ] + } + ] + } + ], "gas_wanted": "121549", "gas_used": "104319", "tx": { "type": "core/StdTx", "value": { - "msg": [{ - "type": "market/MsgSwapSend", - "value": { - "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", - "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", - "offer_coin": { - "denom": "ukrw", - "amount": "199678000" - }, - "ask_denom": "uluna" + "msg": [ + { + "type": "market/MsgSwapSend", + "value": { + "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", + "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", + "offer_coin": { + "denom": "ukrw", + "amount": "199678000" + }, + "ask_denom": "uluna" + } } - }], + ], "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "1824" - }], + "amount": [ + { + "denom": "ukrw", + "amount": "1824" + } + ], "gas": "121549" }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "AyyQtraMl3kEYPXpEbdHUgUsjoixdJAbcIAO8AxAlCcN" - }, - "signature": "pH2JhEp0d4Nzsy5BiKbctxlpaVU2egtGnF6vEEImWElxix+iSrDqCg/GTz/g0Ud1gN+PaHv13xN+QWUk3ypMGA==" - }], + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AyyQtraMl3kEYPXpEbdHUgUsjoixdJAbcIAO8AxAlCcN" + }, + "signature": "pH2JhEp0d4Nzsy5BiKbctxlpaVU2egtGnF6vEEImWElxix+iSrDqCg/GTz/g0Ud1gN+PaHv13xN+QWUk3ypMGA==" + } + ], "memo": "" } }, "timestamp": "2019-12-13T19:26:41Z", - "events": [{ + "events": [ + { "type": "message", - "attributes": [{ + "attributes": [ + { "key": "sender", "value": "terra1rf9xakxf97a49qa5svsf7yypjswzkutqfclur8" }, @@ -1133,7 +1237,8 @@ }, { "type": "swap", - "attributes": [{ + "attributes": [ + { "key": "offer", "value": "199678000ukrw" }, @@ -1153,7 +1258,8 @@ }, { "type": "transfer", - "attributes": [{ + "attributes": [ + { "key": "recipient", "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" }, @@ -1176,111 +1282,124 @@ { "height": "1360", "txhash": "4DFDCEA945FC30574187220CF9305FFAC7EA72C362B7F81E3B00DEF9A0C03A93", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1rf9xakxf97a49qa5svsf7yypjswzkutqfclur8" - }, - { - "key": "sender", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "module", - "value": "market" - }, - { - "key": "action", - "value": "swap" - } - ] - }, - { - "type": "swap", - "attributes": [{ - "key": "offer", - "value": "199678000ukrw" - }, - { - "key": "trader", - "value": "terra1rf9xakxf97a49qa5svsf7yypjswzkutqfclur8" - }, - { - "key": "swap_coin", - "value": "609608uluna" - }, - { - "key": "swap_fee", - "value": "12441.844236760124610589uluna" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "amount", - "value": "199678000ukrw" - }, - { - "key": "recipient", - "value": "terra1rf9xakxf97a49qa5svsf7yypjswzkutqfclur8" - }, - { - "key": "amount", - "value": "609608uluna" - } - ] - } - ] - }], + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1rf9xakxf97a49qa5svsf7yypjswzkutqfclur8" + }, + { + "key": "sender", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "module", + "value": "market" + }, + { + "key": "action", + "value": "swap" + } + ] + }, + { + "type": "swap", + "attributes": [ + { + "key": "offer", + "value": "199678000ukrw" + }, + { + "key": "trader", + "value": "terra1rf9xakxf97a49qa5svsf7yypjswzkutqfclur8" + }, + { + "key": "swap_coin", + "value": "609608uluna" + }, + { + "key": "swap_fee", + "value": "12441.844236760124610589uluna" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "amount", + "value": "199678000ukrw" + }, + { + "key": "recipient", + "value": "terra1rf9xakxf97a49qa5svsf7yypjswzkutqfclur8" + }, + { + "key": "amount", + "value": "609608uluna" + } + ] + } + ] + } + ], "gas_wanted": "121717", "gas_used": "105834", "tx": { "type": "core/StdTx", "value": { - "msg": [{ - "type": "market/MsgSwapSend", - "value": { - "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", - "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", - "offer_coin": { - "denom": "ukrw", - "amount": "199678000" - }, - "ask_denom": "uluna" + "msg": [ + { + "type": "market/MsgSwapSend", + "value": { + "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", + "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", + "offer_coin": { + "denom": "ukrw", + "amount": "199678000" + }, + "ask_denom": "uluna" + } } - }], + ], "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "1826" - }], + "amount": [ + { + "denom": "ukrw", + "amount": "1826" + } + ], "gas": "121717" }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "AyyQtraMl3kEYPXpEbdHUgUsjoixdJAbcIAO8AxAlCcN" - }, - "signature": "XS5FxSFfS6DJh2GfjecybqMTP7IjHQbZZcDHWgyhl2hiRcGxv9t0u58GqsiCc+VuTbkfIzsRRlsH0heLFV6Hhw==" - }], + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AyyQtraMl3kEYPXpEbdHUgUsjoixdJAbcIAO8AxAlCcN" + }, + "signature": "XS5FxSFfS6DJh2GfjecybqMTP7IjHQbZZcDHWgyhl2hiRcGxv9t0u58GqsiCc+VuTbkfIzsRRlsH0heLFV6Hhw==" + } + ], "memo": "" } }, "timestamp": "2019-12-13T19:30:02Z", - "events": [{ + "events": [ + { "type": "message", - "attributes": [{ + "attributes": [ + { "key": "sender", "value": "terra1rf9xakxf97a49qa5svsf7yypjswzkutqfclur8" }, @@ -1300,7 +1419,8 @@ }, { "type": "swap", - "attributes": [{ + "attributes": [ + { "key": "offer", "value": "199678000ukrw" }, @@ -1320,7 +1440,8 @@ }, { "type": "transfer", - "attributes": [{ + "attributes": [ + { "key": "recipient", "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" }, @@ -1343,108 +1464,119 @@ { "height": "1589", "txhash": "6298C91DC40089EE05C99CEC310EEF6A36372D924FF71935E653257BD64777FC", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1ltwln4yqytkfzn6868xazlhg7vlzdcf96sgcjr" - }, - { - "key": "sender", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "module", - "value": "market" - }, - { - "key": "action", - "value": "swap" - } - ] - }, - { - "type": "swap", - "attributes": [{ - "key": "offer", - "value": "14200000000ukrw" - }, - { - "key": "trader", - "value": "terra1ltwln4yqytkfzn6868xazlhg7vlzdcf96sgcjr" - }, - { - "key": "swap_coin", - "value": "43390323uluna" - }, - { - "key": "swap_fee", - "value": "885517.565400409004283521uluna" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "amount", - "value": "14200000000ukrw" - }, - { - "key": "recipient", - "value": "terra1ltwln4yqytkfzn6868xazlhg7vlzdcf96sgcjr" - }, - { - "key": "amount", - "value": "43390323uluna" - } - ] - } - ] - }], + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1ltwln4yqytkfzn6868xazlhg7vlzdcf96sgcjr" + }, + { + "key": "sender", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "module", + "value": "market" + }, + { + "key": "action", + "value": "swap" + } + ] + }, + { + "type": "swap", + "attributes": [ + { + "key": "offer", + "value": "14200000000ukrw" + }, + { + "key": "trader", + "value": "terra1ltwln4yqytkfzn6868xazlhg7vlzdcf96sgcjr" + }, + { + "key": "swap_coin", + "value": "43390323uluna" + }, + { + "key": "swap_fee", + "value": "885517.565400409004283521uluna" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "amount", + "value": "14200000000ukrw" + }, + { + "key": "recipient", + "value": "terra1ltwln4yqytkfzn6868xazlhg7vlzdcf96sgcjr" + }, + { + "key": "amount", + "value": "43390323uluna" + } + ] + } + ] + } + ], "gas_wanted": "200000", "gas_used": "85862", "tx": { "type": "core/StdTx", "value": { - "msg": [{ - "type": "market/MsgSwapSend", - "value": { - "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", - "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", - "offer_coin": { - "denom": "ukrw", - "amount": "14200000000" - }, - "ask_denom": "uluna" + "msg": [ + { + "type": "market/MsgSwapSend", + "value": { + "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", + "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", + "offer_coin": { + "denom": "ukrw", + "amount": "14200000000" + }, + "ask_denom": "uluna" + } } - }], + ], "fee": { "amount": [], "gas": "200000" }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "AvdAIzxogY3aNrJAh+vIwHvIcF1nFq+oZ0s6EldDx8Iz" - }, - "signature": "UzzXUfUq6ThWXUn24BMYRsKzgOWHUgWOUUYLa9hZ1/cmGLN3BpB/kB12GByF4yKAsuPOIlslvHofK46HKLgnyg==" - }], + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AvdAIzxogY3aNrJAh+vIwHvIcF1nFq+oZ0s6EldDx8Iz" + }, + "signature": "UzzXUfUq6ThWXUn24BMYRsKzgOWHUgWOUUYLa9hZ1/cmGLN3BpB/kB12GByF4yKAsuPOIlslvHofK46HKLgnyg==" + } + ], "memo": "" } }, "timestamp": "2019-12-13T19:55:11Z", - "events": [{ + "events": [ + { "type": "message", - "attributes": [{ + "attributes": [ + { "key": "sender", "value": "terra1ltwln4yqytkfzn6868xazlhg7vlzdcf96sgcjr" }, @@ -1464,7 +1596,8 @@ }, { "type": "swap", - "attributes": [{ + "attributes": [ + { "key": "offer", "value": "14200000000ukrw" }, @@ -1484,7 +1617,8 @@ }, { "type": "transfer", - "attributes": [{ + "attributes": [ + { "key": "recipient", "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" }, @@ -1507,111 +1641,124 @@ { "height": "3704", "txhash": "EABD25B64CC12515E9F1C0E80DFB76816377E3BA4695036184AA99BA45353E78", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1hugk5nhcx9v7m74gt996zqtvx3m8t4lplj4luv" - }, - { - "key": "sender", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "module", - "value": "market" - }, - { - "key": "action", - "value": "swap" - } - ] - }, - { - "type": "swap", - "attributes": [{ - "key": "offer", - "value": "15057398890usdr" - }, - { - "key": "trader", - "value": "terra1hugk5nhcx9v7m74gt996zqtvx3m8t4lplj4luv" - }, - { - "key": "swap_coin", - "value": "24439752247267ukrw" - }, - { - "key": "swap_fee", - "value": "61252511898.044711998032287400ukrw" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "amount", - "value": "15057398890usdr" - }, - { - "key": "recipient", - "value": "terra1hugk5nhcx9v7m74gt996zqtvx3m8t4lplj4luv" - }, - { - "key": "amount", - "value": "24439752247267ukrw" - } - ] - } - ] - }], + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1hugk5nhcx9v7m74gt996zqtvx3m8t4lplj4luv" + }, + { + "key": "sender", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "module", + "value": "market" + }, + { + "key": "action", + "value": "swap" + } + ] + }, + { + "type": "swap", + "attributes": [ + { + "key": "offer", + "value": "15057398890usdr" + }, + { + "key": "trader", + "value": "terra1hugk5nhcx9v7m74gt996zqtvx3m8t4lplj4luv" + }, + { + "key": "swap_coin", + "value": "24439752247267ukrw" + }, + { + "key": "swap_fee", + "value": "61252511898.044711998032287400ukrw" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "amount", + "value": "15057398890usdr" + }, + { + "key": "recipient", + "value": "terra1hugk5nhcx9v7m74gt996zqtvx3m8t4lplj4luv" + }, + { + "key": "amount", + "value": "24439752247267ukrw" + } + ] + } + ] + } + ], "gas_wanted": "140800", "gas_used": "93234", "tx": { "type": "core/StdTx", "value": { - "msg": [{ - "type": "market/MsgSwapSend", - "value": { - "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", - "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", - "offer_coin": { - "denom": "usdr", - "amount": "15057398890" - }, - "ask_denom": "ukrw" + "msg": [ + { + "type": "market/MsgSwapSend", + "value": { + "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", + "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", + "offer_coin": { + "denom": "usdr", + "amount": "15057398890" + }, + "ask_denom": "ukrw" + } } - }], + ], "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "2112" - }], + "amount": [ + { + "denom": "ukrw", + "amount": "2112" + } + ], "gas": "140800" }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "Av4m1uVBOCv8BMHAZhKZeNHSY8VgvuA1JQbx8ZAtZtk5" - }, - "signature": "CFAkH3MiWMbmQKrTNf4VdStOfNiGk7EefIBS30b9j3xTbQCnhF/BPo6FEl+ASxZ7txYGA0XIPfyJc0ts0fK5yg==" - }], + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Av4m1uVBOCv8BMHAZhKZeNHSY8VgvuA1JQbx8ZAtZtk5" + }, + "signature": "CFAkH3MiWMbmQKrTNf4VdStOfNiGk7EefIBS30b9j3xTbQCnhF/BPo6FEl+ASxZ7txYGA0XIPfyJc0ts0fK5yg==" + } + ], "memo": "" } }, "timestamp": "2019-12-13T23:47:58Z", - "events": [{ + "events": [ + { "type": "message", - "attributes": [{ + "attributes": [ + { "key": "sender", "value": "terra1hugk5nhcx9v7m74gt996zqtvx3m8t4lplj4luv" }, @@ -1631,7 +1778,8 @@ }, { "type": "swap", - "attributes": [{ + "attributes": [ + { "key": "offer", "value": "15057398890usdr" }, @@ -1651,7 +1799,8 @@ }, { "type": "transfer", - "attributes": [{ + "attributes": [ + { "key": "recipient", "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" }, @@ -1674,111 +1823,124 @@ { "height": "4088", "txhash": "32E9AE6ED6D55981C69423EAB78C7E09A5CDB3CEC0D17D9311AA9AE05E89EFC5", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" - }, - { - "key": "sender", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "module", - "value": "market" - }, - { - "key": "action", - "value": "swap" - } - ] - }, - { - "type": "swap", - "attributes": [{ - "key": "offer", - "value": "150000000ukrw" - }, - { - "key": "trader", - "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" - }, - { - "key": "swap_coin", - "value": "92089usdr" - }, - { - "key": "swap_fee", - "value": "231.500314186043319269usdr" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "amount", - "value": "150000000ukrw" - }, - { - "key": "recipient", - "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" - }, - { - "key": "amount", - "value": "92089usdr" - } - ] - } - ] - }], + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "sender", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "module", + "value": "market" + }, + { + "key": "action", + "value": "swap" + } + ] + }, + { + "type": "swap", + "attributes": [ + { + "key": "offer", + "value": "150000000ukrw" + }, + { + "key": "trader", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "swap_coin", + "value": "92089usdr" + }, + { + "key": "swap_fee", + "value": "231.500314186043319269usdr" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "amount", + "value": "150000000ukrw" + }, + { + "key": "recipient", + "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" + }, + { + "key": "amount", + "value": "92089usdr" + } + ] + } + ] + } + ], "gas_wanted": "140800", "gas_used": "93223", "tx": { "type": "core/StdTx", "value": { - "msg": [{ - "type": "market/MsgSwapSend", - "value": { - "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", - "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", - "offer_coin": { - "denom": "ukrw", - "amount": "150000000" - }, - "ask_denom": "usdr" + "msg": [ + { + "type": "market/MsgSwapSend", + "value": { + "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", + "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", + "offer_coin": { + "denom": "ukrw", + "amount": "150000000" + }, + "ask_denom": "usdr" + } } - }], + ], "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "2112" - }], + "amount": [ + { + "denom": "ukrw", + "amount": "2112" + } + ], "gas": "140800" }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "AgfYBjlvfQtwveh1VkpLc2Es0sw/KqkYo56g7EGGzQcB" - }, - "signature": "2nvQXxWp2ALkjnziHKK+Z2hiwrbxZREOmLMWqc0EcvpBLAv86iKPVvsd3Kca9ImgifPIywVlEd7NJbqq7Czlcg==" - }], + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AgfYBjlvfQtwveh1VkpLc2Es0sw/KqkYo56g7EGGzQcB" + }, + "signature": "2nvQXxWp2ALkjnziHKK+Z2hiwrbxZREOmLMWqc0EcvpBLAv86iKPVvsd3Kca9ImgifPIywVlEd7NJbqq7Czlcg==" + } + ], "memo": "" } }, "timestamp": "2019-12-14T00:29:56Z", - "events": [{ + "events": [ + { "type": "message", - "attributes": [{ + "attributes": [ + { "key": "sender", "value": "terra1wm25ux06a8l5dtkkvwm0f4u2tpryg8zqr6h82l" }, @@ -1798,7 +1960,8 @@ }, { "type": "swap", - "attributes": [{ + "attributes": [ + { "key": "offer", "value": "150000000ukrw" }, @@ -1818,7 +1981,8 @@ }, { "type": "transfer", - "attributes": [{ + "attributes": [ + { "key": "recipient", "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" }, @@ -1841,111 +2005,124 @@ { "height": "4333", "txhash": "5803E652F4E477805755D26A3E5CDFFB61190756A721D83D1E681704E4596CFB", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1vqnhgc6d0jyggtytzqrnsc40r4zez6tx92a66a" - }, - { - "key": "sender", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "module", - "value": "market" - }, - { - "key": "action", - "value": "swap" - } - ] - }, - { - "type": "swap", - "attributes": [{ - "key": "offer", - "value": "10000000uluna" - }, - { - "key": "trader", - "value": "terra1vqnhgc6d0jyggtytzqrnsc40r4zez6tx92a66a" - }, - { - "key": "swap_coin", - "value": "3116236666ukrw" - }, - { - "key": "swap_fee", - "value": "63596667.333333484919999998ukrw" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "amount", - "value": "10000000uluna" - }, - { - "key": "recipient", - "value": "terra1vqnhgc6d0jyggtytzqrnsc40r4zez6tx92a66a" - }, - { - "key": "amount", - "value": "3116236666ukrw" - } - ] - } - ] - }], + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1vqnhgc6d0jyggtytzqrnsc40r4zez6tx92a66a" + }, + { + "key": "sender", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "module", + "value": "market" + }, + { + "key": "action", + "value": "swap" + } + ] + }, + { + "type": "swap", + "attributes": [ + { + "key": "offer", + "value": "10000000uluna" + }, + { + "key": "trader", + "value": "terra1vqnhgc6d0jyggtytzqrnsc40r4zez6tx92a66a" + }, + { + "key": "swap_coin", + "value": "3116236666ukrw" + }, + { + "key": "swap_fee", + "value": "63596667.333333484919999998ukrw" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "amount", + "value": "10000000uluna" + }, + { + "key": "recipient", + "value": "terra1vqnhgc6d0jyggtytzqrnsc40r4zez6tx92a66a" + }, + { + "key": "amount", + "value": "3116236666ukrw" + } + ] + } + ] + } + ], "gas_wanted": "153600", "gas_used": "103065", "tx": { "type": "core/StdTx", "value": { - "msg": [{ - "type": "market/MsgSwapSend", - "value": { - "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", - "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", - "offer_coin": { - "denom": "uluna", - "amount": "10000000" - }, - "ask_denom": "ukrw" + "msg": [ + { + "type": "market/MsgSwapSend", + "value": { + "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", + "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", + "offer_coin": { + "denom": "uluna", + "amount": "10000000" + }, + "ask_denom": "ukrw" + } } - }], + ], "fee": { - "amount": [{ - "denom": "uluna", - "amount": "2304" - }], + "amount": [ + { + "denom": "uluna", + "amount": "2304" + } + ], "gas": "153600" }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "ApFvBU+8UfE57IsOxZa+luRRrFYlbBJ7p86SRgNxfhdX" - }, - "signature": "M/sIgHZ4wnCCfU8B1CWQlbaG9xdHZ6CQLGdqJDmOPE1+NGH1YDAQWXnLlKkks4Ck1M3gpKVlZ2XlnlFeTG2wmg==" - }], + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "ApFvBU+8UfE57IsOxZa+luRRrFYlbBJ7p86SRgNxfhdX" + }, + "signature": "M/sIgHZ4wnCCfU8B1CWQlbaG9xdHZ6CQLGdqJDmOPE1+NGH1YDAQWXnLlKkks4Ck1M3gpKVlZ2XlnlFeTG2wmg==" + } + ], "memo": "" } }, "timestamp": "2019-12-14T00:57:03Z", - "events": [{ + "events": [ + { "type": "message", - "attributes": [{ + "attributes": [ + { "key": "sender", "value": "terra1vqnhgc6d0jyggtytzqrnsc40r4zez6tx92a66a" }, @@ -1965,7 +2142,8 @@ }, { "type": "swap", - "attributes": [{ + "attributes": [ + { "key": "offer", "value": "10000000uluna" }, @@ -1985,7 +2163,8 @@ }, { "type": "transfer", - "attributes": [{ + "attributes": [ + { "key": "recipient", "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" }, @@ -2004,115 +2183,128 @@ ] } ] - }, - { - "height": "4812", - "txhash": "0F092703895E7C1D12B457E5A01EDD03164A08C1C3CCF178C45B55FCE184B66D", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra15vh8gka6p2pgjv4kc7uu060heythp2feqyfkkm" - }, - { - "key": "sender", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "module", - "value": "market" - }, - { - "key": "action", - "value": "swap" - } - ] - }, - { - "type": "swap", - "attributes": [{ - "key": "offer", - "value": "1000000uusd" - }, - { - "key": "trader", - "value": "terra15vh8gka6p2pgjv4kc7uu060heythp2feqyfkkm" - }, - { - "key": "swap_coin", - "value": "1171713865ukrw" - }, - { - "key": "swap_fee", - "value": "2936626.814177308127638836ukrw" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "amount", - "value": "1000000uusd" - }, - { - "key": "recipient", - "value": "terra15vh8gka6p2pgjv4kc7uu060heythp2feqyfkkm" - }, - { - "key": "amount", - "value": "1171713865ukrw" - } - ] - } - ] - }], + }, + { + "height": "4812", + "txhash": "0F092703895E7C1D12B457E5A01EDD03164A08C1C3CCF178C45B55FCE184B66D", + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra15vh8gka6p2pgjv4kc7uu060heythp2feqyfkkm" + }, + { + "key": "sender", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "module", + "value": "market" + }, + { + "key": "action", + "value": "swap" + } + ] + }, + { + "type": "swap", + "attributes": [ + { + "key": "offer", + "value": "1000000uusd" + }, + { + "key": "trader", + "value": "terra15vh8gka6p2pgjv4kc7uu060heythp2feqyfkkm" + }, + { + "key": "swap_coin", + "value": "1171713865ukrw" + }, + { + "key": "swap_fee", + "value": "2936626.814177308127638836ukrw" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "amount", + "value": "1000000uusd" + }, + { + "key": "recipient", + "value": "terra15vh8gka6p2pgjv4kc7uu060heythp2feqyfkkm" + }, + { + "key": "amount", + "value": "1171713865ukrw" + } + ] + } + ] + } + ], "gas_wanted": "200000", "gas_used": "90824", "tx": { "type": "core/StdTx", "value": { - "msg": [{ - "type": "market/MsgSwapSend", - "value": { - "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", - "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", - "offer_coin": { - "denom": "uusd", - "amount": "1000000" - }, - "ask_denom": "ukrw" + "msg": [ + { + "type": "market/MsgSwapSend", + "value": { + "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", + "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", + "offer_coin": { + "denom": "uusd", + "amount": "1000000" + }, + "ask_denom": "ukrw" + } } - }], + ], "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "20000" - }], + "amount": [ + { + "denom": "ukrw", + "amount": "20000" + } + ], "gas": "200000" }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "AwIHvxvbe6ku9vu2gyCnpxSe47V0VLA2KeZvR5WhmmJN" - }, - "signature": "oJ7B5+9eL33ZACC5MGnObVGxvG2QPCD7fBAeW7Y+AvZfXwb9h+3Q7P2B3qbjk1twnib6qhk5IuzDgrdUumrBTA==" - }], + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AwIHvxvbe6ku9vu2gyCnpxSe47V0VLA2KeZvR5WhmmJN" + }, + "signature": "oJ7B5+9eL33ZACC5MGnObVGxvG2QPCD7fBAeW7Y+AvZfXwb9h+3Q7P2B3qbjk1twnib6qhk5IuzDgrdUumrBTA==" + } + ], "memo": "" } }, "timestamp": "2019-12-14T01:49:28Z", - "events": [{ + "events": [ + { "type": "message", - "attributes": [{ + "attributes": [ + { "key": "sender", "value": "terra15vh8gka6p2pgjv4kc7uu060heythp2feqyfkkm" }, @@ -2132,7 +2324,8 @@ }, { "type": "swap", - "attributes": [{ + "attributes": [ + { "key": "offer", "value": "1000000uusd" }, @@ -2152,7 +2345,8 @@ }, { "type": "transfer", - "attributes": [{ + "attributes": [ + { "key": "recipient", "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" }, @@ -2175,111 +2369,124 @@ { "height": "5108", "txhash": "A33BCDED301CE0841ED2B985C4D639FD0CC9DFEA3EE5DDFCECCA43B420CD511D", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra13ld7qfuq37328mw6f5kunez3e2ygqumxfcysms" - }, - { - "key": "sender", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "module", - "value": "market" - }, - { - "key": "action", - "value": "swap" - } - ] - }, - { - "type": "swap", - "attributes": [{ - "key": "offer", - "value": "1000000000ukrw" - }, - { - "key": "trader", - "value": "terra13ld7qfuq37328mw6f5kunez3e2ygqumxfcysms" - }, - { - "key": "swap_coin", - "value": "3082084uluna" - }, - { - "key": "swap_fee", - "value": "62899.750917287189724090uluna" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "amount", - "value": "1000000000ukrw" - }, - { - "key": "recipient", - "value": "terra13ld7qfuq37328mw6f5kunez3e2ygqumxfcysms" - }, - { - "key": "amount", - "value": "3082084uluna" - } - ] - } - ] - }], + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra13ld7qfuq37328mw6f5kunez3e2ygqumxfcysms" + }, + { + "key": "sender", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "module", + "value": "market" + }, + { + "key": "action", + "value": "swap" + } + ] + }, + { + "type": "swap", + "attributes": [ + { + "key": "offer", + "value": "1000000000ukrw" + }, + { + "key": "trader", + "value": "terra13ld7qfuq37328mw6f5kunez3e2ygqumxfcysms" + }, + { + "key": "swap_coin", + "value": "3082084uluna" + }, + { + "key": "swap_fee", + "value": "62899.750917287189724090uluna" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "amount", + "value": "1000000000ukrw" + }, + { + "key": "recipient", + "value": "terra13ld7qfuq37328mw6f5kunez3e2ygqumxfcysms" + }, + { + "key": "amount", + "value": "3082084uluna" + } + ] + } + ] + } + ], "gas_wanted": "142400", "gas_used": "94924", "tx": { "type": "core/StdTx", "value": { - "msg": [{ - "type": "market/MsgSwapSend", - "value": { - "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", - "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", - "offer_coin": { - "denom": "ukrw", - "amount": "1000000000" - }, - "ask_denom": "uluna" + "msg": [ + { + "type": "market/MsgSwapSend", + "value": { + "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", + "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", + "offer_coin": { + "denom": "ukrw", + "amount": "1000000000" + }, + "ask_denom": "uluna" + } } - }], + ], "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "2136" - }], + "amount": [ + { + "denom": "ukrw", + "amount": "2136" + } + ], "gas": "142400" }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "AgphMi7W6xdtDmcAe8x2xYwx9yk5eqh9aOao2Lg0jB1+" - }, - "signature": "jgaafIqDvoj10Rz5vNUD6Wazw0IQYps5eFoTp38GTAl5UpEzSjLxVvqHfn02Bq8vsO7ZBp6UAutDkbunchycTQ==" - }], + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AgphMi7W6xdtDmcAe8x2xYwx9yk5eqh9aOao2Lg0jB1+" + }, + "signature": "jgaafIqDvoj10Rz5vNUD6Wazw0IQYps5eFoTp38GTAl5UpEzSjLxVvqHfn02Bq8vsO7ZBp6UAutDkbunchycTQ==" + } + ], "memo": "" } }, "timestamp": "2019-12-14T02:21:52Z", - "events": [{ + "events": [ + { "type": "message", - "attributes": [{ + "attributes": [ + { "key": "sender", "value": "terra13ld7qfuq37328mw6f5kunez3e2ygqumxfcysms" }, @@ -2299,7 +2506,8 @@ }, { "type": "swap", - "attributes": [{ + "attributes": [ + { "key": "offer", "value": "1000000000ukrw" }, @@ -2319,7 +2527,8 @@ }, { "type": "transfer", - "attributes": [{ + "attributes": [ + { "key": "recipient", "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" }, @@ -2342,111 +2551,124 @@ { "height": "5430", "txhash": "B39523DC7607ECE06F95885BFEC529FD066653DC590AF26D0676DFABCE1F465C", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1lh7utjdpev54cgtl7ak54ht0jv7j2e77ru3ms7" - }, - { - "key": "sender", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "module", - "value": "market" - }, - { - "key": "action", - "value": "swap" - } - ] - }, - { - "type": "swap", - "attributes": [{ - "key": "offer", - "value": "3043000000ukrw" - }, - { - "key": "trader", - "value": "terra1lh7utjdpev54cgtl7ak54ht0jv7j2e77ru3ms7" - }, - { - "key": "swap_coin", - "value": "9374359uluna" - }, - { - "key": "swap_fee", - "value": "191313.971132183981239305uluna" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "amount", - "value": "3043000000ukrw" - }, - { - "key": "recipient", - "value": "terra1lh7utjdpev54cgtl7ak54ht0jv7j2e77ru3ms7" - }, - { - "key": "amount", - "value": "9374359uluna" - } - ] - } - ] - }], + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1lh7utjdpev54cgtl7ak54ht0jv7j2e77ru3ms7" + }, + { + "key": "sender", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "module", + "value": "market" + }, + { + "key": "action", + "value": "swap" + } + ] + }, + { + "type": "swap", + "attributes": [ + { + "key": "offer", + "value": "3043000000ukrw" + }, + { + "key": "trader", + "value": "terra1lh7utjdpev54cgtl7ak54ht0jv7j2e77ru3ms7" + }, + { + "key": "swap_coin", + "value": "9374359uluna" + }, + { + "key": "swap_fee", + "value": "191313.971132183981239305uluna" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "amount", + "value": "3043000000ukrw" + }, + { + "key": "recipient", + "value": "terra1lh7utjdpev54cgtl7ak54ht0jv7j2e77ru3ms7" + }, + { + "key": "amount", + "value": "9374359uluna" + } + ] + } + ] + } + ], "gas_wanted": "154266", "gas_used": "102235", "tx": { "type": "core/StdTx", "value": { - "msg": [{ - "type": "market/MsgSwapSend", - "value": { - "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", - "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", - "offer_coin": { - "denom": "ukrw", - "amount": "3043000000" - }, - "ask_denom": "uluna" + "msg": [ + { + "type": "market/MsgSwapSend", + "value": { + "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", + "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", + "offer_coin": { + "denom": "ukrw", + "amount": "3043000000" + }, + "ask_denom": "uluna" + } } - }], + ], "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "2314" - }], + "amount": [ + { + "denom": "ukrw", + "amount": "2314" + } + ], "gas": "154266" }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "AqQVHHfjtoZPWR60a3kr+GX2Ef5x7NhcK0EqSSm+JTx4" - }, - "signature": "TIVJQph8v4gAeMtkgCSUw1hlSfjsjSbEU38fOg6wrTh+EtgBTaVQ7PC+lVxFVdWqBMeSJNHkyOtx1JZ5uM/o7g==" - }], + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "AqQVHHfjtoZPWR60a3kr+GX2Ef5x7NhcK0EqSSm+JTx4" + }, + "signature": "TIVJQph8v4gAeMtkgCSUw1hlSfjsjSbEU38fOg6wrTh+EtgBTaVQ7PC+lVxFVdWqBMeSJNHkyOtx1JZ5uM/o7g==" + } + ], "memo": "" } }, "timestamp": "2019-12-14T03:02:34Z", - "events": [{ + "events": [ + { "type": "message", - "attributes": [{ + "attributes": [ + { "key": "sender", "value": "terra1lh7utjdpev54cgtl7ak54ht0jv7j2e77ru3ms7" }, @@ -2466,7 +2688,8 @@ }, { "type": "swap", - "attributes": [{ + "attributes": [ + { "key": "offer", "value": "3043000000ukrw" }, @@ -2486,7 +2709,8 @@ }, { "type": "transfer", - "attributes": [{ + "attributes": [ + { "key": "recipient", "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" }, @@ -2506,115 +2730,127 @@ } ] }, - { "height": "7029", "txhash": "1A15A911002139CF031CDE059961DA5616D9D11ACD8148C2592725BEA5D5D603", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1e5ncelsh4qhqt3s97vn43hxlhmt7zd43yszdnf" - }, - { - "key": "sender", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "module", - "value": "market" - }, - { - "key": "action", - "value": "swap" - } - ] - }, - { - "type": "swap", - "attributes": [{ - "key": "offer", - "value": "3700043112ukrw" - }, - { - "key": "trader", - "value": "terra1e5ncelsh4qhqt3s97vn43hxlhmt7zd43yszdnf" - }, - { - "key": "swap_coin", - "value": "11293736uluna" - }, - { - "key": "swap_fee", - "value": "230484.656146179538017925uluna" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "amount", - "value": "3700043112ukrw" - }, - { - "key": "recipient", - "value": "terra1e5ncelsh4qhqt3s97vn43hxlhmt7zd43yszdnf" - }, - { - "key": "amount", - "value": "11293736uluna" - } - ] - } - ] - }], + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1e5ncelsh4qhqt3s97vn43hxlhmt7zd43yszdnf" + }, + { + "key": "sender", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "module", + "value": "market" + }, + { + "key": "action", + "value": "swap" + } + ] + }, + { + "type": "swap", + "attributes": [ + { + "key": "offer", + "value": "3700043112ukrw" + }, + { + "key": "trader", + "value": "terra1e5ncelsh4qhqt3s97vn43hxlhmt7zd43yszdnf" + }, + { + "key": "swap_coin", + "value": "11293736uluna" + }, + { + "key": "swap_fee", + "value": "230484.656146179538017925uluna" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "amount", + "value": "3700043112ukrw" + }, + { + "key": "recipient", + "value": "terra1e5ncelsh4qhqt3s97vn43hxlhmt7zd43yszdnf" + }, + { + "key": "amount", + "value": "11293736uluna" + } + ] + } + ] + } + ], "gas_wanted": "157266", "gas_used": "104023", "tx": { "type": "core/StdTx", "value": { - "msg": [{ - "type": "market/MsgSwapSend", - "value": { - "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", - "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", - "offer_coin": { - "denom": "ukrw", - "amount": "3700043112" - }, - "ask_denom": "uluna" + "msg": [ + { + "type": "market/MsgSwapSend", + "value": { + "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", + "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", + "offer_coin": { + "denom": "ukrw", + "amount": "3700043112" + }, + "ask_denom": "uluna" + } } - }], + ], "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "2359" - }], + "amount": [ + { + "denom": "ukrw", + "amount": "2359" + } + ], "gas": "157266" }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "A4j7d14sTqP+bnIYUDeOssgXHJcaFSIaDI7yR2j5LGLV" - }, - "signature": "Poqh5DO3ydtOcXLJKb9MWd5obdRYzUVX1KxAgoxN1y8XSpops9KouiB/ZtR2Bp9tqu6d+dSl5LL1KOIoeO8Jdg==" - }], + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A4j7d14sTqP+bnIYUDeOssgXHJcaFSIaDI7yR2j5LGLV" + }, + "signature": "Poqh5DO3ydtOcXLJKb9MWd5obdRYzUVX1KxAgoxN1y8XSpops9KouiB/ZtR2Bp9tqu6d+dSl5LL1KOIoeO8Jdg==" + } + ], "memo": "" } }, "timestamp": "2019-12-14T06:43:30Z", - "events": [{ + "events": [ + { "type": "message", - "attributes": [{ + "attributes": [ + { "key": "sender", "value": "terra1e5ncelsh4qhqt3s97vn43hxlhmt7zd43yszdnf" }, @@ -2634,7 +2870,8 @@ }, { "type": "swap", - "attributes": [{ + "attributes": [ + { "key": "offer", "value": "3700043112ukrw" }, @@ -2654,7 +2891,8 @@ }, { "type": "transfer", - "attributes": [{ + "attributes": [ + { "key": "recipient", "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" }, @@ -2677,111 +2915,124 @@ { "height": "7063", "txhash": "5B80B431338D5509651301CC74A2D1D600864E40B509D2E643430B1FAF070E77", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1vwzu8ax0apk2s50nvh8hec7u8wa2qgdqrdc8mr" - }, - { - "key": "sender", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "module", - "value": "market" - }, - { - "key": "action", - "value": "swap" - } - ] - }, - { - "type": "swap", - "attributes": [{ - "key": "offer", - "value": "303000000ukrw" - }, - { - "key": "trader", - "value": "terra1vwzu8ax0apk2s50nvh8hec7u8wa2qgdqrdc8mr" - }, - { - "key": "swap_coin", - "value": "924998uluna" - }, - { - "key": "swap_fee", - "value": "18878.226571829129249484uluna" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "amount", - "value": "303000000ukrw" - }, - { - "key": "recipient", - "value": "terra1vwzu8ax0apk2s50nvh8hec7u8wa2qgdqrdc8mr" - }, - { - "key": "amount", - "value": "924998uluna" - } - ] - } - ] - }], + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1vwzu8ax0apk2s50nvh8hec7u8wa2qgdqrdc8mr" + }, + { + "key": "sender", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "module", + "value": "market" + }, + { + "key": "action", + "value": "swap" + } + ] + }, + { + "type": "swap", + "attributes": [ + { + "key": "offer", + "value": "303000000ukrw" + }, + { + "key": "trader", + "value": "terra1vwzu8ax0apk2s50nvh8hec7u8wa2qgdqrdc8mr" + }, + { + "key": "swap_coin", + "value": "924998uluna" + }, + { + "key": "swap_fee", + "value": "18878.226571829129249484uluna" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "amount", + "value": "303000000ukrw" + }, + { + "key": "recipient", + "value": "terra1vwzu8ax0apk2s50nvh8hec7u8wa2qgdqrdc8mr" + }, + { + "key": "amount", + "value": "924998uluna" + } + ] + } + ] + } + ], "gas_wanted": "154200", "gas_used": "102018", "tx": { "type": "core/StdTx", "value": { - "msg": [{ - "type": "market/MsgSwapSend", - "value": { - "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", - "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", - "offer_coin": { - "denom": "ukrw", - "amount": "303000000" - }, - "ask_denom": "uluna" + "msg": [ + { + "type": "market/MsgSwapSend", + "value": { + "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", + "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", + "offer_coin": { + "denom": "ukrw", + "amount": "303000000" + }, + "ask_denom": "uluna" + } } - }], + ], "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "2313" - }], + "amount": [ + { + "denom": "ukrw", + "amount": "2313" + } + ], "gas": "154200" }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "A+rC2/2QJTyf0Kxn0CYu8+YpfALGvmpqvPvDa0DMwIBA" - }, - "signature": "S81Ol90/oEtRJG6Uy1F71s8UmS8d0317wtWFeDxjciZ150dO68RHlpkFn3dLibLPwNatkgQy+5bGnu/6tOIrEw==" - }], + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A+rC2/2QJTyf0Kxn0CYu8+YpfALGvmpqvPvDa0DMwIBA" + }, + "signature": "S81Ol90/oEtRJG6Uy1F71s8UmS8d0317wtWFeDxjciZ150dO68RHlpkFn3dLibLPwNatkgQy+5bGnu/6tOIrEw==" + } + ], "memo": "" } }, "timestamp": "2019-12-14T06:47:14Z", - "events": [{ + "events": [ + { "type": "message", - "attributes": [{ + "attributes": [ + { "key": "sender", "value": "terra1vwzu8ax0apk2s50nvh8hec7u8wa2qgdqrdc8mr" }, @@ -2801,7 +3052,8 @@ }, { "type": "swap", - "attributes": [{ + "attributes": [ + { "key": "offer", "value": "303000000ukrw" }, @@ -2821,7 +3073,8 @@ }, { "type": "transfer", - "attributes": [{ + "attributes": [ + { "key": "recipient", "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" }, @@ -2844,111 +3097,124 @@ { "height": "7184", "txhash": "6D04506F015B6014FA6A6DB2100ACCBCDC8471EC6828E26AFB779E5872A8A8AC", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1z9c76qv2efuz644ffpesh2wsz00nkp389fv4td" - }, - { - "key": "sender", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "module", - "value": "market" - }, - { - "key": "action", - "value": "swap" - } - ] - }, - { - "type": "swap", - "attributes": [{ - "key": "offer", - "value": "104631249ukrw" - }, - { - "key": "trader", - "value": "terra1z9c76qv2efuz644ffpesh2wsz00nkp389fv4td" - }, - { - "key": "swap_coin", - "value": "319020uluna" - }, - { - "key": "swap_fee", - "value": "6511.498055483517237373uluna" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "amount", - "value": "104631249ukrw" - }, - { - "key": "recipient", - "value": "terra1z9c76qv2efuz644ffpesh2wsz00nkp389fv4td" - }, - { - "key": "amount", - "value": "319020uluna" - } - ] - } - ] - }], + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1z9c76qv2efuz644ffpesh2wsz00nkp389fv4td" + }, + { + "key": "sender", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "module", + "value": "market" + }, + { + "key": "action", + "value": "swap" + } + ] + }, + { + "type": "swap", + "attributes": [ + { + "key": "offer", + "value": "104631249ukrw" + }, + { + "key": "trader", + "value": "terra1z9c76qv2efuz644ffpesh2wsz00nkp389fv4td" + }, + { + "key": "swap_coin", + "value": "319020uluna" + }, + { + "key": "swap_fee", + "value": "6511.498055483517237373uluna" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "amount", + "value": "104631249ukrw" + }, + { + "key": "recipient", + "value": "terra1z9c76qv2efuz644ffpesh2wsz00nkp389fv4td" + }, + { + "key": "amount", + "value": "319020uluna" + } + ] + } + ] + } + ], "gas_wanted": "149533", "gas_used": "98944", "tx": { "type": "core/StdTx", "value": { - "msg": [{ - "type": "market/MsgSwapSend", - "value": { - "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", - "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", - "offer_coin": { - "denom": "ukrw", - "amount": "104631249" - }, - "ask_denom": "uluna" + "msg": [ + { + "type": "market/MsgSwapSend", + "value": { + "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", + "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", + "offer_coin": { + "denom": "ukrw", + "amount": "104631249" + }, + "ask_denom": "uluna" + } } - }], + ], "fee": { - "amount": [{ - "denom": "uluna", - "amount": "2243" - }], + "amount": [ + { + "denom": "uluna", + "amount": "2243" + } + ], "gas": "149533" }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "A+QMTSU19pkA7EDkFnGqdGnuetqCw3HFgoYiENwLWHKC" - }, - "signature": "7OCXYbVQTz3ZXOpOIl459XyHBuJowKB+xHbOjloKbMpIWZRPwfZMlO1C76Mgyz9h3Iin4oh4RVwyOJ2gIGWsgw==" - }], + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A+QMTSU19pkA7EDkFnGqdGnuetqCw3HFgoYiENwLWHKC" + }, + "signature": "7OCXYbVQTz3ZXOpOIl459XyHBuJowKB+xHbOjloKbMpIWZRPwfZMlO1C76Mgyz9h3Iin4oh4RVwyOJ2gIGWsgw==" + } + ], "memo": "" } }, "timestamp": "2019-12-14T07:00:44Z", - "events": [{ + "events": [ + { "type": "message", - "attributes": [{ + "attributes": [ + { "key": "sender", "value": "terra1z9c76qv2efuz644ffpesh2wsz00nkp389fv4td" }, @@ -2968,7 +3234,8 @@ }, { "type": "swap", - "attributes": [{ + "attributes": [ + { "key": "offer", "value": "104631249ukrw" }, @@ -2988,7 +3255,8 @@ }, { "type": "transfer", - "attributes": [{ + "attributes": [ + { "key": "recipient", "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" }, @@ -3011,111 +3279,124 @@ { "height": "7211", "txhash": "1795BC917A9FDF9682659D06799B3003090D05BC889AB9FC36CF76CBA1A0B924", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1t2a44r52qgtfhpwe8f9q7jvlk9u32vd54geny3" - }, - { - "key": "sender", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "module", - "value": "market" - }, - { - "key": "action", - "value": "swap" - } - ] - }, - { - "type": "swap", - "attributes": [{ - "key": "offer", - "value": "1586733047uusd" - }, - { - "key": "trader", - "value": "terra1t2a44r52qgtfhpwe8f9q7jvlk9u32vd54geny3" - }, - { - "key": "swap_coin", - "value": "5679662316uluna" - }, - { - "key": "swap_fee", - "value": "115911476.237465710376852488uluna" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "amount", - "value": "1586733047uusd" - }, - { - "key": "recipient", - "value": "terra1t2a44r52qgtfhpwe8f9q7jvlk9u32vd54geny3" - }, - { - "key": "amount", - "value": "5679662316uluna" - } - ] - } - ] - }], + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1t2a44r52qgtfhpwe8f9q7jvlk9u32vd54geny3" + }, + { + "key": "sender", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "module", + "value": "market" + }, + { + "key": "action", + "value": "swap" + } + ] + }, + { + "type": "swap", + "attributes": [ + { + "key": "offer", + "value": "1586733047uusd" + }, + { + "key": "trader", + "value": "terra1t2a44r52qgtfhpwe8f9q7jvlk9u32vd54geny3" + }, + { + "key": "swap_coin", + "value": "5679662316uluna" + }, + { + "key": "swap_fee", + "value": "115911476.237465710376852488uluna" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "amount", + "value": "1586733047uusd" + }, + { + "key": "recipient", + "value": "terra1t2a44r52qgtfhpwe8f9q7jvlk9u32vd54geny3" + }, + { + "key": "amount", + "value": "5679662316uluna" + } + ] + } + ] + } + ], "gas_wanted": "157666", "gas_used": "104863", "tx": { "type": "core/StdTx", "value": { - "msg": [{ - "type": "market/MsgSwapSend", - "value": { - "from_address": "terra1t2a44r52qgtfhpwe8f9q7jvlk9u32vd54geny3", - "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", - "offer_coin": { - "denom": "uusd", - "amount": "1586733047" - }, - "ask_denom": "uluna" + "msg": [ + { + "type": "market/MsgSwapSend", + "value": { + "from_address": "terra1t2a44r52qgtfhpwe8f9q7jvlk9u32vd54geny3", + "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", + "offer_coin": { + "denom": "uusd", + "amount": "1586733047" + }, + "ask_denom": "uluna" + } } - }], + ], "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "2365" - }], + "amount": [ + { + "denom": "ukrw", + "amount": "2365" + } + ], "gas": "157666" }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "Ah6NFWskz640j7nqNgQ2sVr2d6+MH3JoMBSDogdXSYqF" - }, - "signature": "NYNUjYrDr6NTK7ep5407FNFBjls/C49zIU99cqBhcfxzGzq2FHvdWJgOTc3TeN46p7XJ1W2dDDDyJ1tYqN+XqA==" - }], + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Ah6NFWskz640j7nqNgQ2sVr2d6+MH3JoMBSDogdXSYqF" + }, + "signature": "NYNUjYrDr6NTK7ep5407FNFBjls/C49zIU99cqBhcfxzGzq2FHvdWJgOTc3TeN46p7XJ1W2dDDDyJ1tYqN+XqA==" + } + ], "memo": "" } }, "timestamp": "2019-12-14T07:03:46Z", - "events": [{ + "events": [ + { "type": "message", - "attributes": [{ + "attributes": [ + { "key": "sender", "value": "terra1t2a44r52qgtfhpwe8f9q7jvlk9u32vd54geny3" }, @@ -3135,7 +3416,8 @@ }, { "type": "swap", - "attributes": [{ + "attributes": [ + { "key": "offer", "value": "1586733047uusd" }, @@ -3155,7 +3437,8 @@ }, { "type": "transfer", - "attributes": [{ + "attributes": [ + { "key": "recipient", "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" }, @@ -3178,111 +3461,124 @@ { "height": "7231", "txhash": "015472A33AC2C1A3A4DFBAFCA9A326D8C605C1E95EC6D4AB0ECF972F2F83945E", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1a6a7qzqc8xg8j5pxcnl62crvdhuvwqtygfupdv" - }, - { - "key": "sender", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "module", - "value": "market" - }, - { - "key": "action", - "value": "swap" - } - ] - }, - { - "type": "swap", - "attributes": [{ - "key": "offer", - "value": "2571000000ukrw" - }, - { - "key": "trader", - "value": "terra1a6a7qzqc8xg8j5pxcnl62crvdhuvwqtygfupdv" - }, - { - "key": "swap_coin", - "value": "7832891uluna" - }, - { - "key": "swap_fee", - "value": "159855.113989636834897746uluna" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "amount", - "value": "2571000000ukrw" - }, - { - "key": "recipient", - "value": "terra1a6a7qzqc8xg8j5pxcnl62crvdhuvwqtygfupdv" - }, - { - "key": "amount", - "value": "7832891uluna" - } - ] - } - ] - }], + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1a6a7qzqc8xg8j5pxcnl62crvdhuvwqtygfupdv" + }, + { + "key": "sender", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "module", + "value": "market" + }, + { + "key": "action", + "value": "swap" + } + ] + }, + { + "type": "swap", + "attributes": [ + { + "key": "offer", + "value": "2571000000ukrw" + }, + { + "key": "trader", + "value": "terra1a6a7qzqc8xg8j5pxcnl62crvdhuvwqtygfupdv" + }, + { + "key": "swap_coin", + "value": "7832891uluna" + }, + { + "key": "swap_fee", + "value": "159855.113989636834897746uluna" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "amount", + "value": "2571000000ukrw" + }, + { + "key": "recipient", + "value": "terra1a6a7qzqc8xg8j5pxcnl62crvdhuvwqtygfupdv" + }, + { + "key": "amount", + "value": "7832891uluna" + } + ] + } + ] + } + ], "gas_wanted": "153600", "gas_used": "103339", "tx": { "type": "core/StdTx", "value": { - "msg": [{ - "type": "market/MsgSwapSend", - "value": { - "from_address": "terra1a6a7qzqc8xg8j5pxcnl62crvdhuvwqtygfupdv", - "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", - "offer_coin": { - "denom": "ukrw", - "amount": "2571000000" - }, - "ask_denom": "uluna" + "msg": [ + { + "type": "market/MsgSwapSend", + "value": { + "from_address": "terra1a6a7qzqc8xg8j5pxcnl62crvdhuvwqtygfupdv", + "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", + "offer_coin": { + "denom": "ukrw", + "amount": "2571000000" + }, + "ask_denom": "uluna" + } } - }], + ], "fee": { - "amount": [{ - "denom": "umnt", - "amount": "2304" - }], + "amount": [ + { + "denom": "umnt", + "amount": "2304" + } + ], "gas": "153600" }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "A1ZzV6Ihxe6nPD2G1UJJYifZ5xmsPdWkN3AMZLkGqEUp" - }, - "signature": "x6Q9uLoCmcibSb/2PvvzYSZnTYdNhyGpZymqbkkFxsoUN1SL/jWbrZ8TcOHy5JhweIckLzKGzb7rmrAD7+yI0w==" - }], + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A1ZzV6Ihxe6nPD2G1UJJYifZ5xmsPdWkN3AMZLkGqEUp" + }, + "signature": "x6Q9uLoCmcibSb/2PvvzYSZnTYdNhyGpZymqbkkFxsoUN1SL/jWbrZ8TcOHy5JhweIckLzKGzb7rmrAD7+yI0w==" + } + ], "memo": "" } }, "timestamp": "2019-12-14T07:05:58Z", - "events": [{ + "events": [ + { "type": "message", - "attributes": [{ + "attributes": [ + { "key": "sender", "value": "terra1a6a7qzqc8xg8j5pxcnl62crvdhuvwqtygfupdv" }, @@ -3302,7 +3598,8 @@ }, { "type": "swap", - "attributes": [{ + "attributes": [ + { "key": "offer", "value": "2571000000ukrw" }, @@ -3322,7 +3619,8 @@ }, { "type": "transfer", - "attributes": [{ + "attributes": [ + { "key": "recipient", "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" }, @@ -3342,115 +3640,127 @@ } ] }, - { "height": "7287", "txhash": "8F45E9177E65F58F8F87CD75529463C42D50FF80E28C9E7211EFA0CECB096395", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1e5ncelsh4qhqt3s97vn43hxlhmt7zd43yszdnf" - }, - { - "key": "sender", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "module", - "value": "market" - }, - { - "key": "action", - "value": "swap" - } - ] - }, - { - "type": "swap", - "attributes": [{ - "key": "offer", - "value": "1076250185ukrw" - }, - { - "key": "trader", - "value": "terra1e5ncelsh4qhqt3s97vn43hxlhmt7zd43yszdnf" - }, - { - "key": "swap_coin", - "value": "3278258uluna" - }, - { - "key": "swap_fee", - "value": "66904.199544135772767719uluna" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "amount", - "value": "1076250185ukrw" - }, - { - "key": "recipient", - "value": "terra1e5ncelsh4qhqt3s97vn43hxlhmt7zd43yszdnf" - }, - { - "key": "amount", - "value": "3278258uluna" - } - ] - } - ] - }], + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1e5ncelsh4qhqt3s97vn43hxlhmt7zd43yszdnf" + }, + { + "key": "sender", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "module", + "value": "market" + }, + { + "key": "action", + "value": "swap" + } + ] + }, + { + "type": "swap", + "attributes": [ + { + "key": "offer", + "value": "1076250185ukrw" + }, + { + "key": "trader", + "value": "terra1e5ncelsh4qhqt3s97vn43hxlhmt7zd43yszdnf" + }, + { + "key": "swap_coin", + "value": "3278258uluna" + }, + { + "key": "swap_fee", + "value": "66904.199544135772767719uluna" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "amount", + "value": "1076250185ukrw" + }, + { + "key": "recipient", + "value": "terra1e5ncelsh4qhqt3s97vn43hxlhmt7zd43yszdnf" + }, + { + "key": "amount", + "value": "3278258uluna" + } + ] + } + ] + } + ], "gas_wanted": "156666", "gas_used": "104410", "tx": { "type": "core/StdTx", "value": { - "msg": [{ - "type": "market/MsgSwapSend", - "value": { - "from_address": "terra1e5ncelsh4qhqt3s97vn43hxlhmt7zd43yszdnf", - "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", - "offer_coin": { - "denom": "ukrw", - "amount": "1076250185" - }, - "ask_denom": "uluna", + "msg": [ + { + "type": "market/MsgSwapSend", + "value": { + "from_address": "terra1e5ncelsh4qhqt3s97vn43hxlhmt7zd43yszdnf", + "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", + "offer_coin": { + "denom": "ukrw", + "amount": "1076250185" + }, + "ask_denom": "uluna" + } } - }], + ], "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "2350" - }], + "amount": [ + { + "denom": "ukrw", + "amount": "2350" + } + ], "gas": "156666" }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "A4j7d14sTqP+bnIYUDeOssgXHJcaFSIaDI7yR2j5LGLV" - }, - "signature": "kwJbOq93QK4OLuu15PUPsFvnBfL/zZvAQv9FugWuL31lms7eM8yGIcyZ9mvdZ8mpAupyN7xG8Ys1TsbMHryhUQ==" - }], + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A4j7d14sTqP+bnIYUDeOssgXHJcaFSIaDI7yR2j5LGLV" + }, + "signature": "kwJbOq93QK4OLuu15PUPsFvnBfL/zZvAQv9FugWuL31lms7eM8yGIcyZ9mvdZ8mpAupyN7xG8Ys1TsbMHryhUQ==" + } + ], "memo": "" } }, "timestamp": "2019-12-14T07:12:15Z", - "events": [{ + "events": [ + { "type": "message", - "attributes": [{ + "attributes": [ + { "key": "sender", "value": "terra1e5ncelsh4qhqt3s97vn43hxlhmt7zd43yszdnf" }, @@ -3470,7 +3780,8 @@ }, { "type": "swap", - "attributes": [{ + "attributes": [ + { "key": "offer", "value": "1076250185ukrw" }, @@ -3490,7 +3801,8 @@ }, { "type": "transfer", - "attributes": [{ + "attributes": [ + { "key": "recipient", "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" }, @@ -3513,111 +3825,124 @@ { "height": "7809", "txhash": "62962F7893056E64474AAA61C665A3CA8593532DB67063562746D32515872499", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44" - }, - { - "key": "sender", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "module", - "value": "market" - }, - { - "key": "action", - "value": "swap" - } - ] - }, - { - "type": "swap", - "attributes": [{ - "key": "offer", - "value": "274000000usdr" - }, - { - "key": "trader", - "value": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44" - }, - { - "key": "swap_coin", - "value": "444361466124ukrw" - }, - { - "key": "swap_fee", - "value": "1113687885.877857592651035907ukrw" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "amount", - "value": "274000000usdr" - }, - { - "key": "recipient", - "value": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44" - }, - { - "key": "amount", - "value": "444361466124ukrw" - } - ] - } - ] - }], + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44" + }, + { + "key": "sender", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "module", + "value": "market" + }, + { + "key": "action", + "value": "swap" + } + ] + }, + { + "type": "swap", + "attributes": [ + { + "key": "offer", + "value": "274000000usdr" + }, + { + "key": "trader", + "value": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44" + }, + { + "key": "swap_coin", + "value": "444361466124ukrw" + }, + { + "key": "swap_fee", + "value": "1113687885.877857592651035907ukrw" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "amount", + "value": "274000000usdr" + }, + { + "key": "recipient", + "value": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44" + }, + { + "key": "amount", + "value": "444361466124ukrw" + } + ] + } + ] + } + ], "gas_wanted": "139266", "gas_used": "91702", "tx": { "type": "core/StdTx", "value": { - "msg": [{ - "type": "market/MsgSwapSend", - "value": { - "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", - "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", - "offer_coin": { - "denom": "usdr", - "amount": "274000000" - }, - "ask_denom": "ukrw", + "msg": [ + { + "type": "market/MsgSwapSend", + "value": { + "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", + "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", + "offer_coin": { + "denom": "usdr", + "amount": "274000000" + }, + "ask_denom": "ukrw" + } } - }], + ], "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "2089" - }], + "amount": [ + { + "denom": "ukrw", + "amount": "2089" + } + ], "gas": "139266" }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "Atlj1l9cZfijj9dr+kSWrg3KhVCXJ9cQDwEth0md1ttC" - }, - "signature": "GoRLaMfcMHRhsqi3XOQgYwbExrX+Q0hM0duElfebGshJgIrntXPOmYuEewLvuvRinPLDhfqlg8qSfazuUZhzsg==" - }], + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "Atlj1l9cZfijj9dr+kSWrg3KhVCXJ9cQDwEth0md1ttC" + }, + "signature": "GoRLaMfcMHRhsqi3XOQgYwbExrX+Q0hM0duElfebGshJgIrntXPOmYuEewLvuvRinPLDhfqlg8qSfazuUZhzsg==" + } + ], "memo": "" } }, "timestamp": "2019-12-14T08:11:01Z", - "events": [{ + "events": [ + { "type": "message", - "attributes": [{ + "attributes": [ + { "key": "sender", "value": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44" }, @@ -3637,7 +3962,8 @@ }, { "type": "swap", - "attributes": [{ + "attributes": [ + { "key": "offer", "value": "274000000usdr" }, @@ -3657,7 +3983,8 @@ }, { "type": "transfer", - "attributes": [{ + "attributes": [ + { "key": "recipient", "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" }, @@ -3680,112 +4007,124 @@ { "height": "7919", "txhash": "B5A77E73CAAD4B1928C5F480AFE34255A77B149ED2257ECCF63D00636669C4F8", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1pc0gs3n6803x7jqe9m7etegmyx29xw38aj9vvd" - }, - { - "key": "sender", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "module", - "value": "market" - }, - { - "key": "action", - "value": "swap" - } - ] - }, - { - "type": "swap", - "attributes": [{ - "key": "offer", - "value": "10443486170ukrw" - }, - { - "key": "trader", - "value": "terra1pc0gs3n6803x7jqe9m7etegmyx29xw38aj9vvd" - }, - { - "key": "swap_coin", - "value": "32003178uluna" - }, - { - "key": "swap_fee", - "value": "653126.471544714286211613uluna" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "amount", - "value": "10443486170ukrw" - }, - { - "key": "recipient", - "value": "terra1pc0gs3n6803x7jqe9m7etegmyx29xw38aj9vvd" - }, - { - "key": "amount", - "value": "32003178uluna" - } - ] - } - ] - }], + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1pc0gs3n6803x7jqe9m7etegmyx29xw38aj9vvd" + }, + { + "key": "sender", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "module", + "value": "market" + }, + { + "key": "action", + "value": "swap" + } + ] + }, + { + "type": "swap", + "attributes": [ + { + "key": "offer", + "value": "10443486170ukrw" + }, + { + "key": "trader", + "value": "terra1pc0gs3n6803x7jqe9m7etegmyx29xw38aj9vvd" + }, + { + "key": "swap_coin", + "value": "32003178uluna" + }, + { + "key": "swap_fee", + "value": "653126.471544714286211613uluna" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "amount", + "value": "10443486170ukrw" + }, + { + "key": "recipient", + "value": "terra1pc0gs3n6803x7jqe9m7etegmyx29xw38aj9vvd" + }, + { + "key": "amount", + "value": "32003178uluna" + } + ] + } + ] + } + ], "gas_wanted": "200000", "gas_used": "105242", "tx": { "type": "core/StdTx", "value": { - "msg": [{ - "type": "market/MsgSwapSend", - "value": { - "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", - "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", - "offer_coin": { - "denom": "ukrw", - "amount": "10443486170" - }, - "ask_denom": "uluna", - "receiver": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3" + "msg": [ + { + "type": "market/MsgSwapSend", + "value": { + "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", + "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", + "offer_coin": { + "denom": "ukrw", + "amount": "10443486170" + }, + "ask_denom": "uluna" + } } - }], + ], "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "1000" - }], + "amount": [ + { + "denom": "ukrw", + "amount": "1000" + } + ], "gas": "200000" }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "A/f6xMteQKTDcma84mxtZ861cCvhlywIubWIkjUghVFJ" - }, - "signature": "XDCkCk5s7QRx+CSh1zGZkIKxm+fUX2sS6jAwdhx8Qeto6EybUucAI6szMcCMrFDvCfw3VabmPpU9UYy5fDLNiA==" - }], + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A/f6xMteQKTDcma84mxtZ861cCvhlywIubWIkjUghVFJ" + }, + "signature": "XDCkCk5s7QRx+CSh1zGZkIKxm+fUX2sS6jAwdhx8Qeto6EybUucAI6szMcCMrFDvCfw3VabmPpU9UYy5fDLNiA==" + } + ], "memo": "" } }, "timestamp": "2019-12-14T08:23:10Z", - "events": [{ + "events": [ + { "type": "message", - "attributes": [{ + "attributes": [ + { "key": "sender", "value": "terra1pc0gs3n6803x7jqe9m7etegmyx29xw38aj9vvd" }, @@ -3805,7 +4144,8 @@ }, { "type": "swap", - "attributes": [{ + "attributes": [ + { "key": "offer", "value": "10443486170ukrw" }, @@ -3825,7 +4165,8 @@ }, { "type": "transfer", - "attributes": [{ + "attributes": [ + { "key": "recipient", "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" }, @@ -3848,111 +4189,124 @@ { "height": "7946", "txhash": "DBD09E2314302E64A12D953A27D501551B967A4C6B1692CB312ADEB1F7649D2A", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1pc0gs3n6803x7jqe9m7etegmyx29xw38aj9vvd" - }, - { - "key": "sender", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "module", - "value": "market" - }, - { - "key": "action", - "value": "swap" - } - ] - }, - { - "type": "swap", - "attributes": [{ - "key": "offer", - "value": "4999999000ukrw" - }, - { - "key": "trader", - "value": "terra1pc0gs3n6803x7jqe9m7etegmyx29xw38aj9vvd" - }, - { - "key": "swap_coin", - "value": "15318081uluna" - }, - { - "key": "swap_fee", - "value": "312614.566091804674006934uluna" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "amount", - "value": "4999999000ukrw" - }, - { - "key": "recipient", - "value": "terra1pc0gs3n6803x7jqe9m7etegmyx29xw38aj9vvd" - }, - { - "key": "amount", - "value": "15318081uluna" - } - ] - } - ] - }], + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1pc0gs3n6803x7jqe9m7etegmyx29xw38aj9vvd" + }, + { + "key": "sender", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "module", + "value": "market" + }, + { + "key": "action", + "value": "swap" + } + ] + }, + { + "type": "swap", + "attributes": [ + { + "key": "offer", + "value": "4999999000ukrw" + }, + { + "key": "trader", + "value": "terra1pc0gs3n6803x7jqe9m7etegmyx29xw38aj9vvd" + }, + { + "key": "swap_coin", + "value": "15318081uluna" + }, + { + "key": "swap_fee", + "value": "312614.566091804674006934uluna" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "amount", + "value": "4999999000ukrw" + }, + { + "key": "recipient", + "value": "terra1pc0gs3n6803x7jqe9m7etegmyx29xw38aj9vvd" + }, + { + "key": "amount", + "value": "15318081uluna" + } + ] + } + ] + } + ], "gas_wanted": "200000", "gas_used": "105277", "tx": { "type": "core/StdTx", "value": { - "msg": [{ - "type": "market/MsgSwapSend", - "value": { - "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", - "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", - "offer_coin": { - "denom": "ukrw", - "amount": "4999999000" - }, - "ask_denom": "uluna" + "msg": [ + { + "type": "market/MsgSwapSend", + "value": { + "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", + "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", + "offer_coin": { + "denom": "ukrw", + "amount": "4999999000" + }, + "ask_denom": "uluna" + } } - }], + ], "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "1000" - }], + "amount": [ + { + "denom": "ukrw", + "amount": "1000" + } + ], "gas": "200000" }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "A/f6xMteQKTDcma84mxtZ861cCvhlywIubWIkjUghVFJ" - }, - "signature": "BxHq0OBR7ssbo+T4OnrCl6Gx6VwdLTGimIUXvSChmA13ZbGbomwrP0VyA3kmjJ7fxHw8bo2xDU1jH2TLzq/AUQ==" - }], + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A/f6xMteQKTDcma84mxtZ861cCvhlywIubWIkjUghVFJ" + }, + "signature": "BxHq0OBR7ssbo+T4OnrCl6Gx6VwdLTGimIUXvSChmA13ZbGbomwrP0VyA3kmjJ7fxHw8bo2xDU1jH2TLzq/AUQ==" + } + ], "memo": "" } }, "timestamp": "2019-12-14T08:26:16Z", - "events": [{ + "events": [ + { "type": "message", - "attributes": [{ + "attributes": [ + { "key": "sender", "value": "terra1pc0gs3n6803x7jqe9m7etegmyx29xw38aj9vvd" }, @@ -3972,7 +4326,8 @@ }, { "type": "swap", - "attributes": [{ + "attributes": [ + { "key": "offer", "value": "4999999000ukrw" }, @@ -3992,7 +4347,8 @@ }, { "type": "transfer", - "attributes": [{ + "attributes": [ + { "key": "recipient", "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" }, @@ -4015,111 +4371,124 @@ { "height": "7951", "txhash": "4420484806F89356FC27D9955B35BC5DBA7C90B9736AE9C74942518C04FBC154", - - "logs": [{ - "msg_index": 0, - "success": true, - "log": "", - "events": [{ - "type": "message", - "attributes": [{ - "key": "sender", - "value": "terra1pc0gs3n6803x7jqe9m7etegmyx29xw38aj9vvd" - }, - { - "key": "sender", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "module", - "value": "market" - }, - { - "key": "action", - "value": "swap" - } - ] - }, - { - "type": "swap", - "attributes": [{ - "key": "offer", - "value": "33545673umnt" - }, - { - "key": "trader", - "value": "terra1pc0gs3n6803x7jqe9m7etegmyx29xw38aj9vvd" - }, - { - "key": "swap_coin", - "value": "44246uluna" - }, - { - "key": "swap_fee", - "value": "903.125747892567670983uluna" - } - ] - }, - { - "type": "transfer", - "attributes": [{ - "key": "recipient", - "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" - }, - { - "key": "amount", - "value": "33545673umnt" - }, - { - "key": "recipient", - "value": "terra1pc0gs3n6803x7jqe9m7etegmyx29xw38aj9vvd" - }, - { - "key": "amount", - "value": "44246uluna" - } - ] - } - ] - }], + "logs": [ + { + "msg_index": 0, + "success": true, + "log": "", + "events": [ + { + "type": "message", + "attributes": [ + { + "key": "sender", + "value": "terra1pc0gs3n6803x7jqe9m7etegmyx29xw38aj9vvd" + }, + { + "key": "sender", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "module", + "value": "market" + }, + { + "key": "action", + "value": "swap" + } + ] + }, + { + "type": "swap", + "attributes": [ + { + "key": "offer", + "value": "33545673umnt" + }, + { + "key": "trader", + "value": "terra1pc0gs3n6803x7jqe9m7etegmyx29xw38aj9vvd" + }, + { + "key": "swap_coin", + "value": "44246uluna" + }, + { + "key": "swap_fee", + "value": "903.125747892567670983uluna" + } + ] + }, + { + "type": "transfer", + "attributes": [ + { + "key": "recipient", + "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" + }, + { + "key": "amount", + "value": "33545673umnt" + }, + { + "key": "recipient", + "value": "terra1pc0gs3n6803x7jqe9m7etegmyx29xw38aj9vvd" + }, + { + "key": "amount", + "value": "44246uluna" + } + ] + } + ] + } + ], "gas_wanted": "200000", "gas_used": "104927", "tx": { "type": "core/StdTx", "value": { - "msg": [{ - "type": "market/MsgSwapSend", - "value": { - "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", - "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", - "offer_coin": { - "denom": "umnt", - "amount": "33545673" - }, - "ask_denom": "uluna" + "msg": [ + { + "type": "market/MsgSwapSend", + "value": { + "from_address": "terra1zh3vg5zegqn78xpckm78etueye4adl0ckpku44", + "to_address": "terra1gwsn3fwxf0qwmpda7ujjdzsxj5a446rgwwntl3", + "offer_coin": { + "denom": "umnt", + "amount": "33545673" + }, + "ask_denom": "uluna" + } } - }], + ], "fee": { - "amount": [{ - "denom": "ukrw", - "amount": "1000" - }], + "amount": [ + { + "denom": "ukrw", + "amount": "1000" + } + ], "gas": "200000" }, - "signatures": [{ - "pub_key": { - "type": "tendermint/PubKeySecp256k1", - "value": "A/f6xMteQKTDcma84mxtZ861cCvhlywIubWIkjUghVFJ" - }, - "signature": "O/Zbbyic91+xOe0xw7BhqrAiFm9ZL6wqeVcK63zb5lYH8jDclhIAGX4efs1EJIwbEz0HokqCAvqzgUTUSfJ6KA==" - }], + "signatures": [ + { + "pub_key": { + "type": "tendermint/PubKeySecp256k1", + "value": "A/f6xMteQKTDcma84mxtZ861cCvhlywIubWIkjUghVFJ" + }, + "signature": "O/Zbbyic91+xOe0xw7BhqrAiFm9ZL6wqeVcK63zb5lYH8jDclhIAGX4efs1EJIwbEz0HokqCAvqzgUTUSfJ6KA==" + } + ], "memo": "" } }, "timestamp": "2019-12-14T08:26:49Z", - "events": [{ + "events": [ + { "type": "message", - "attributes": [{ + "attributes": [ + { "key": "sender", "value": "terra1pc0gs3n6803x7jqe9m7etegmyx29xw38aj9vvd" }, @@ -4139,7 +4508,8 @@ }, { "type": "swap", - "attributes": [{ + "attributes": [ + { "key": "offer", "value": "33545673umnt" }, @@ -4159,7 +4529,8 @@ }, { "type": "transfer", - "attributes": [{ + "attributes": [ + { "key": "recipient", "value": "terra1untf85jwv3kt0puyyc39myxjvplagr3wstgs5s" }, @@ -4179,7 +4550,5 @@ } ] } - - ] } \ No newline at end of file diff --git a/src/core/market/msgs/MsgSwapSend.spec.ts b/src/core/market/msgs/MsgSwapSend.spec.ts new file mode 100644 index 000000000..6a0e17f12 --- /dev/null +++ b/src/core/market/msgs/MsgSwapSend.spec.ts @@ -0,0 +1,15 @@ +import { MsgSwapSend } from './MsgSwapSend'; +const MsgSwapSendAmino = require('./MsgSwapSend.data.json'); + +describe('MsgSwapSend', () => { + it('deserializes', () => { + MsgSwapSendAmino.txs.forEach((txinfo: any) => { + txinfo.tx.value.msg.forEach((msg: any) => { + if (msg.type == 'market/MsgSwapSend') { + const e = MsgSwapSend.fromAmino(msg, true); + expect(e.toAmino(true)).toEqual(msg); + } + }); + }); + }); +}); diff --git a/src/core/market/msgs/MsgSwapSend.ts b/src/core/market/msgs/MsgSwapSend.ts index 3c7c038fa..705a1d181 100644 --- a/src/core/market/msgs/MsgSwapSend.ts +++ b/src/core/market/msgs/MsgSwapSend.ts @@ -2,8 +2,8 @@ import { JSONSerializable } from '../../../util/json'; import { Coin } from '../../Coin'; import { Denom } from '../../Denom'; import { AccAddress } from '../../bech32'; -import { Any } from '@terra-money/terra.proto/google/protobuf/any'; -import { MsgSwapSend as MsgSwapSend_pb } from '@terra-money/terra.proto/terra/market/v1beta1/tx'; +import { Any } from '@terra-money/legacy.proto/google/protobuf/any'; +import { MsgSwapSend as MsgSwapSend_pb } from '@terra-money/legacy.proto/terra/market/v1beta1/tx'; /** * Executes a market swap send between 2 denominations at the exchange rate registered by the @@ -30,7 +30,13 @@ export class MsgSwapSend extends JSONSerializable< super(); } - public static fromAmino(data: MsgSwapSend.Amino): MsgSwapSend { + public static fromAmino( + data: MsgSwapSend.Amino, + isClassic?: boolean + ): MsgSwapSend { + if (!isClassic) { + throw new Error('Not supported for the network'); + } const { value: { from_address, to_address, offer_coin, ask_denom }, } = data; @@ -42,7 +48,10 @@ export class MsgSwapSend extends JSONSerializable< ); } - public toAmino(): MsgSwapSend.Amino { + public toAmino(isClassic?: boolean): MsgSwapSend.Amino { + if (!isClassic) { + throw new Error('Not supported for the network'); + } const { from_address, to_address, offer_coin, ask_denom } = this; return { type: 'market/MsgSwapSend', @@ -55,7 +64,13 @@ export class MsgSwapSend extends JSONSerializable< }; } - public static fromProto(proto: MsgSwapSend.Proto): MsgSwapSend { + public static fromProto( + proto: MsgSwapSend.Proto, + isClassic?: boolean + ): MsgSwapSend { + if (!isClassic) { + throw new Error('Not supported for the network'); + } return new MsgSwapSend( proto.fromAddress, proto.toAddress, @@ -64,7 +79,10 @@ export class MsgSwapSend extends JSONSerializable< ); } - public toProto(): MsgSwapSend.Proto { + public toProto(isClassic?: boolean): MsgSwapSend.Proto { + if (!isClassic) { + throw new Error('Not supported for the network'); + } const { from_address, to_address, offer_coin, ask_denom } = this; return MsgSwapSend_pb.fromPartial({ askDenom: ask_denom, @@ -74,18 +92,30 @@ export class MsgSwapSend extends JSONSerializable< }); } - public packAny(): Any { + public packAny(isClassic?: boolean): Any { + if (!isClassic) { + throw new Error('Not supported for the network'); + } return Any.fromPartial({ typeUrl: '/terra.market.v1beta1.MsgSwapSend', value: MsgSwapSend_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgSwapSend { + public static unpackAny(msgAny: Any, isClassic?: boolean): MsgSwapSend { + if (!isClassic) { + throw new Error('Not supported for the network'); + } return MsgSwapSend.fromProto(MsgSwapSend_pb.decode(msgAny.value)); } - public static fromData(data: MsgSwapSend.Data): MsgSwapSend { + public static fromData( + data: MsgSwapSend.Data, + isClassic?: boolean + ): MsgSwapSend { + if (!isClassic) { + throw new Error('Not supported for the network'); + } const { from_address, to_address, offer_coin, ask_denom } = data; return new MsgSwapSend( from_address, @@ -95,7 +125,10 @@ export class MsgSwapSend extends JSONSerializable< ); } - public toData(): MsgSwapSend.Data { + public toData(isClassic?: boolean): MsgSwapSend.Data { + if (!isClassic) { + throw new Error('Not supported for the network'); + } const { from_address, to_address, offer_coin, ask_denom } = this; return { '@type': '/terra.market.v1beta1.MsgSwapSend', diff --git a/src/core/oracle/AggregateExchangeRatePrevote.ts b/src/core/oracle/AggregateExchangeRatePrevote.ts index ca9a47fee..eb772bb12 100644 --- a/src/core/oracle/AggregateExchangeRatePrevote.ts +++ b/src/core/oracle/AggregateExchangeRatePrevote.ts @@ -1,6 +1,6 @@ import { JSONSerializable } from '../../util/json'; import { ValAddress } from '../bech32'; -import { AggregateExchangeRatePrevote as AggregateExchangeRatePrevote_pb } from '@terra-money/terra.proto/terra/oracle/v1beta1/oracle'; +import { AggregateExchangeRatePrevote as AggregateExchangeRatePrevote_pb } from '@terra-money/legacy.proto/terra/oracle/v1beta1/oracle'; import * as Long from 'long'; /** diff --git a/src/core/oracle/AggregateExchangeRateVote.ts b/src/core/oracle/AggregateExchangeRateVote.ts index 4f9fd3648..fc013f42f 100644 --- a/src/core/oracle/AggregateExchangeRateVote.ts +++ b/src/core/oracle/AggregateExchangeRateVote.ts @@ -4,7 +4,7 @@ import { Denom } from '../Denom'; import { ExchangeRateTuple as ExchangeRateTuple_pb, AggregateExchangeRateVote as AggregateExchangeRateVote_pb, -} from '@terra-money/terra.proto/terra/oracle/v1beta1/oracle'; +} from '@terra-money/legacy.proto/terra/oracle/v1beta1/oracle'; import { Numeric, Dec } from '../numeric'; /** diff --git a/src/core/oracle/msgs/MsgAggregateExchangeRatePrevote.ts b/src/core/oracle/msgs/MsgAggregateExchangeRatePrevote.ts index ed5affa0f..5c4ffb6aa 100644 --- a/src/core/oracle/msgs/MsgAggregateExchangeRatePrevote.ts +++ b/src/core/oracle/msgs/MsgAggregateExchangeRatePrevote.ts @@ -1,7 +1,7 @@ import { JSONSerializable } from '../../../util/json'; import { AccAddress, ValAddress } from '../../bech32'; -import { Any } from '@terra-money/terra.proto/google/protobuf/any'; -import { MsgAggregateExchangeRatePrevote as MsgAggregateExchangeRatePrevote_pb } from '@terra-money/terra.proto/terra/oracle/v1beta1/tx'; +import { Any } from '@terra-money/legacy.proto/google/protobuf/any'; +import { MsgAggregateExchangeRatePrevote as MsgAggregateExchangeRatePrevote_pb } from '@terra-money/legacy.proto/terra/oracle/v1beta1/tx'; /** * Aggregate analog of MsgExchangeRatePrevote @@ -25,15 +25,24 @@ export class MsgAggregateExchangeRatePrevote extends JSONSerializable< } public static fromAmino( - data: MsgAggregateExchangeRatePrevote.Amino + data: MsgAggregateExchangeRatePrevote.Amino, + isClassic?: boolean ): MsgAggregateExchangeRatePrevote { + if (!isClassic) { + throw new Error('Not supported for the network'); + } + const { value: { hash, feeder, validator }, } = data; return new MsgAggregateExchangeRatePrevote(hash, feeder, validator); } - public toAmino(): MsgAggregateExchangeRatePrevote.Amino { + public toAmino(isClassic?: boolean): MsgAggregateExchangeRatePrevote.Amino { + if (!isClassic) { + throw new Error('Not supported for the network'); + } + const { hash, feeder, validator } = this; return { type: 'oracle/MsgAggregateExchangeRatePrevote', @@ -46,13 +55,22 @@ export class MsgAggregateExchangeRatePrevote extends JSONSerializable< } public static fromData( - data: MsgAggregateExchangeRatePrevote.Data + data: MsgAggregateExchangeRatePrevote.Data, + isClassic?: boolean ): MsgAggregateExchangeRatePrevote { + if (!isClassic) { + throw new Error('Not supported for the network'); + } + const { hash, feeder, validator } = data; return new MsgAggregateExchangeRatePrevote(hash, feeder, validator); } - public toData(): MsgAggregateExchangeRatePrevote.Data { + public toData(isClassic?: boolean): MsgAggregateExchangeRatePrevote.Data { + if (!isClassic) { + throw new Error('Not supported for the network'); + } + const { hash, feeder, validator } = this; return { '@type': '/terra.oracle.v1beta1.MsgAggregateExchangeRatePrevote', @@ -63,8 +81,13 @@ export class MsgAggregateExchangeRatePrevote extends JSONSerializable< } public static fromProto( - proto: MsgAggregateExchangeRatePrevote.Proto + proto: MsgAggregateExchangeRatePrevote.Proto, + isClassic?: boolean ): MsgAggregateExchangeRatePrevote { + if (!isClassic) { + throw new Error('Not supported for the network'); + } + return new MsgAggregateExchangeRatePrevote( proto.hash, proto.feeder, @@ -72,7 +95,11 @@ export class MsgAggregateExchangeRatePrevote extends JSONSerializable< ); } - public toProto(): MsgAggregateExchangeRatePrevote.Proto { + public toProto(isClassic?: boolean): MsgAggregateExchangeRatePrevote.Proto { + if (!isClassic) { + throw new Error('Not supported for the network'); + } + const { hash, feeder, validator } = this; return MsgAggregateExchangeRatePrevote_pb.fromPartial({ hash, @@ -81,14 +108,25 @@ export class MsgAggregateExchangeRatePrevote extends JSONSerializable< }); } - public packAny(): Any { + public packAny(isClassic?: boolean): Any { + if (!isClassic) { + throw new Error('Not supported for the network'); + } + return Any.fromPartial({ typeUrl: '/terra.oracle.v1beta1.MsgAggregateExchangeRatePrevote', value: MsgAggregateExchangeRatePrevote_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgAggregateExchangeRatePrevote { + public static unpackAny( + msgAny: Any, + isClassic?: boolean + ): MsgAggregateExchangeRatePrevote { + if (!isClassic) { + throw new Error('Not supported for the network'); + } + return MsgAggregateExchangeRatePrevote.fromProto( MsgAggregateExchangeRatePrevote_pb.decode(msgAny.value) ); diff --git a/src/core/oracle/msgs/MsgAggregateExchangeRateVote.ts b/src/core/oracle/msgs/MsgAggregateExchangeRateVote.ts index 2c37d4d61..ce8f82675 100644 --- a/src/core/oracle/msgs/MsgAggregateExchangeRateVote.ts +++ b/src/core/oracle/msgs/MsgAggregateExchangeRateVote.ts @@ -3,8 +3,8 @@ import { JSONSerializable } from '../../../util/json'; import { AccAddress, ValAddress } from '../../bech32'; import { MsgAggregateExchangeRatePrevote } from './MsgAggregateExchangeRatePrevote'; import { Coins } from '../../Coins'; -import { Any } from '@terra-money/terra.proto/google/protobuf/any'; -import { MsgAggregateExchangeRateVote as MsgAggregateExchangeRateVote_pb } from '@terra-money/terra.proto/terra/oracle/v1beta1/tx'; +import { Any } from '@terra-money/legacy.proto/google/protobuf/any'; +import { MsgAggregateExchangeRateVote as MsgAggregateExchangeRateVote_pb } from '@terra-money/legacy.proto/terra/oracle/v1beta1/tx'; /** * Calculates the aggregate vote hash @@ -51,8 +51,13 @@ export class MsgAggregateExchangeRateVote extends JSONSerializable< } public static fromAmino( - data: MsgAggregateExchangeRateVote.Amino + data: MsgAggregateExchangeRateVote.Amino, + isClassic?: boolean ): MsgAggregateExchangeRateVote { + if (!isClassic) { + throw new Error('Not supported for the network'); + } + const { value: { exchange_rates, salt, feeder, validator }, } = data; @@ -60,7 +65,11 @@ export class MsgAggregateExchangeRateVote extends JSONSerializable< return new MsgAggregateExchangeRateVote(xrs, salt, feeder, validator); } - public toAmino(): MsgAggregateExchangeRateVote.Amino { + public toAmino(isClassic?: boolean): MsgAggregateExchangeRateVote.Amino { + if (!isClassic) { + throw new Error('Not supported for the network'); + } + const { exchange_rates, salt, feeder, validator } = this; return { type: 'oracle/MsgAggregateExchangeRateVote', @@ -74,14 +83,21 @@ export class MsgAggregateExchangeRateVote extends JSONSerializable< } public static fromData( - proto: MsgAggregateExchangeRateVote.Data + proto: MsgAggregateExchangeRateVote.Data, + isClassic?: boolean ): MsgAggregateExchangeRateVote { + if (!isClassic) { + throw new Error('Not supported for the network'); + } const { exchange_rates, salt, feeder, validator } = proto; const xrs = Coins.fromString(exchange_rates); return new MsgAggregateExchangeRateVote(xrs, salt, feeder, validator); } - public toData(): MsgAggregateExchangeRateVote.Data { + public toData(isClassic?: boolean): MsgAggregateExchangeRateVote.Data { + if (!isClassic) { + throw new Error('Not supported for the network'); + } const { exchange_rates, salt, feeder, validator } = this; return { '@type': '/terra.oracle.v1beta1.MsgAggregateExchangeRateVote', @@ -93,8 +109,12 @@ export class MsgAggregateExchangeRateVote extends JSONSerializable< } public static fromProto( - proto: MsgAggregateExchangeRateVote.Proto + proto: MsgAggregateExchangeRateVote.Proto, + isClassic?: boolean ): MsgAggregateExchangeRateVote { + if (!isClassic) { + throw new Error('Not supported for the network'); + } const xrs = Coins.fromString(proto.exchangeRates); return new MsgAggregateExchangeRateVote( xrs, @@ -104,7 +124,10 @@ export class MsgAggregateExchangeRateVote extends JSONSerializable< ); } - public toProto(): MsgAggregateExchangeRateVote.Proto { + public toProto(isClassic?: boolean): MsgAggregateExchangeRateVote.Proto { + if (!isClassic) { + throw new Error('Not supported for the network'); + } const { exchange_rates, salt, feeder, validator } = this; return MsgAggregateExchangeRateVote_pb.fromPartial({ exchangeRates: exchange_rates.toString(), @@ -137,14 +160,23 @@ export class MsgAggregateExchangeRateVote extends JSONSerializable< ); } - public packAny(): Any { + public packAny(isClassic?: boolean): Any { + if (!isClassic) { + throw new Error('Not supported for the network'); + } return Any.fromPartial({ typeUrl: '/terra.oracle.v1beta1.MsgAggregateExchangeRateVote', value: MsgAggregateExchangeRateVote_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgAggregateExchangeRateVote { + public static unpackAny( + msgAny: Any, + isClassic?: boolean + ): MsgAggregateExchangeRateVote { + if (!isClassic) { + throw new Error('Not supported for the network'); + } return MsgAggregateExchangeRateVote.fromProto( MsgAggregateExchangeRateVote_pb.decode(msgAny.value) ); diff --git a/src/core/oracle/msgs/MsgDelegateFeedConsent.spec.ts b/src/core/oracle/msgs/MsgDelegateFeedConsent.spec.ts index 89423cd18..7fc71b64e 100644 --- a/src/core/oracle/msgs/MsgDelegateFeedConsent.spec.ts +++ b/src/core/oracle/msgs/MsgDelegateFeedConsent.spec.ts @@ -6,8 +6,8 @@ describe('MsgDelegateFeedConsent', () => { MsgDelegateFeedConsentAmino.txs.forEach((txinfo: any) => { txinfo.tx.value.msg.forEach((msg: any) => { if (msg.type == 'oracle/MsgDelegateFeedConsent') { - const e = MsgDelegateFeedConsent.fromAmino(msg); - expect(e.toAmino()).toEqual(msg); + const e = MsgDelegateFeedConsent.fromAmino(msg, true); + expect(e.toAmino(true)).toEqual(msg); } }); }); diff --git a/src/core/oracle/msgs/MsgDelegateFeedConsent.ts b/src/core/oracle/msgs/MsgDelegateFeedConsent.ts index 3c02083bf..cc699fc99 100644 --- a/src/core/oracle/msgs/MsgDelegateFeedConsent.ts +++ b/src/core/oracle/msgs/MsgDelegateFeedConsent.ts @@ -1,7 +1,7 @@ import { JSONSerializable } from '../../../util/json'; import { AccAddress, ValAddress } from '../../bech32'; import { Any } from '@terra-money/terra.proto/google/protobuf/any'; -import { MsgDelegateFeedConsent as MsgDelegateFeedConsent_pb } from '@terra-money/terra.proto/terra/oracle/v1beta1/tx'; +import { MsgDelegateFeedConsent as MsgDelegateFeedConsent_pb } from '@terra-money/legacy.proto/terra/oracle/v1beta1/tx'; /** * A **feeeder** is an account which is responsible for signing transactions with Oracle vote @@ -26,15 +26,24 @@ export class MsgDelegateFeedConsent extends JSONSerializable< } public static fromAmino( - data: MsgDelegateFeedConsent.Amino + data: MsgDelegateFeedConsent.Amino, + isClassic?: boolean ): MsgDelegateFeedConsent { + if (!isClassic) { + throw new Error('Not supported for the network'); + } + const { value: { operator, delegate }, } = data; return new MsgDelegateFeedConsent(operator, delegate); } - public toAmino(): MsgDelegateFeedConsent.Amino { + public toAmino(isClassic?: boolean): MsgDelegateFeedConsent.Amino { + if (!isClassic) { + throw new Error('Not supported for the network'); + } + const { operator, delegate } = this; return { type: 'oracle/MsgDelegateFeedConsent', @@ -46,13 +55,21 @@ export class MsgDelegateFeedConsent extends JSONSerializable< } public static fromData( - data: MsgDelegateFeedConsent.Data + data: MsgDelegateFeedConsent.Data, + isClassic?: boolean ): MsgDelegateFeedConsent { + if (!isClassic) { + throw new Error('Not supported for the network'); + } + const { operator, delegate } = data; return new MsgDelegateFeedConsent(operator, delegate); } - public toData(): MsgDelegateFeedConsent.Data { + public toData(isClassic?: boolean): MsgDelegateFeedConsent.Data { + if (!isClassic) { + throw new Error('Not supported for the network'); + } const { operator, delegate } = this; return { '@type': '/terra.oracle.v1beta1.MsgDelegateFeedConsent', @@ -62,12 +79,21 @@ export class MsgDelegateFeedConsent extends JSONSerializable< } public static fromProto( - proto: MsgDelegateFeedConsent.Proto + proto: MsgDelegateFeedConsent.Proto, + isClassic?: boolean ): MsgDelegateFeedConsent { + if (!isClassic) { + throw new Error('Not supported for the network'); + } + return new MsgDelegateFeedConsent(proto.operator, proto.delegate); } - public toProto(): MsgDelegateFeedConsent.Proto { + public toProto(isClassic?: boolean): MsgDelegateFeedConsent.Proto { + if (!isClassic) { + throw new Error('Not supported for the network'); + } + const { operator, delegate } = this; return MsgDelegateFeedConsent_pb.fromPartial({ delegate, @@ -75,14 +101,23 @@ export class MsgDelegateFeedConsent extends JSONSerializable< }); } - public packAny(): Any { + public packAny(isClassic?: boolean): Any { + if (!isClassic) { + throw new Error('Not supported for the network'); + } return Any.fromPartial({ typeUrl: '/terra.oracle.v1beta1.MsgDelegateFeedConsent', value: MsgDelegateFeedConsent_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgDelegateFeedConsent { + public static unpackAny( + msgAny: Any, + isClassic?: boolean + ): MsgDelegateFeedConsent { + if (!isClassic) { + throw new Error('Not supported for the network'); + } return MsgDelegateFeedConsent.fromProto( MsgDelegateFeedConsent_pb.decode(msgAny.value) ); diff --git a/src/core/params/ParamChange.ts b/src/core/params/ParamChange.ts index 414d11801..415067cc4 100644 --- a/src/core/params/ParamChange.ts +++ b/src/core/params/ParamChange.ts @@ -1,5 +1,5 @@ import { JSONSerializable } from '../../util/json'; -import { ParamChange as ParamChange_pb } from '@terra-money/terra.proto/cosmos/params/v1beta1/params'; +import { ParamChange as ParamChange_pb } from '@terra-money/legacy.proto/cosmos/params/v1beta1/params'; export class ParamChanges extends JSONSerializable< ParamChanges.Amino, diff --git a/src/core/params/proposals/ParameterChangeProposal.spec.ts b/src/core/params/proposals/ParameterChangeProposal.spec.ts index 0bd7e67e0..6a8bc7fdc 100644 --- a/src/core/params/proposals/ParameterChangeProposal.spec.ts +++ b/src/core/params/proposals/ParameterChangeProposal.spec.ts @@ -186,12 +186,198 @@ const aminoJson: ParameterChangeProposal.Amino = { }, }; +const aminoJsonV2: ParameterChangeProposal.Amino = { + type: 'cosmos-sdk/ParameterChangeProposal', + value: { + title: 'testing params', + description: 'yay!', + changes: [ + { + subspace: 'distribution', + key: 'communitytax', + value: '"0.0"', + }, + { + subspace: 'distribution', + key: 'baseproposerreward', + value: '"0.01"', + }, + { + subspace: 'distribution', + key: 'bonusproposerreward', + value: '"0.04"', + }, + { + subspace: 'distribution', + key: 'withdrawaddrenabled', + value: 'true', + }, + { subspace: 'staking', key: 'UnbondingTime', value: '"300000000000"' }, + { subspace: 'staking', key: 'MaxValidators', value: '130' }, + { subspace: 'staking', key: 'MaxEntries', value: '7' }, + { subspace: 'staking', key: 'HistoricalEntries', value: '10000' }, + { subspace: 'staking', key: 'BondDenom', value: '"uluna"' }, + { subspace: 'slashing', key: 'SignedBlocksWindow', value: '"10000"' }, + { + subspace: 'slashing', + key: 'MinSignedPerWindow', + value: '"0.05"', + }, + { + subspace: 'slashing', + key: 'DowntimeJailDuration', + value: '"600000000000"', + }, + { + subspace: 'slashing', + key: 'SlashFractionDoubleSign', + value: '"0.05"', + }, + { + subspace: 'slashing', + key: 'SlashFractionDowntime', + value: '"0.0001"', + }, + { + subspace: 'treasury', + key: 'TaxPolicy', + value: + '{"rate_min":"0.0","rate_max":"0.0","cap":{"denom":"usdr","amount":"0"},"change_rate_max":"0.0"}', + }, + { + subspace: 'treasury', + key: 'RewardPolicy', + value: + '{"rate_min":"0.0","rate_max":"1.0","cap":{"denom":"unused","amount":"0"},"change_rate_max":"0.0"}', + }, + { + subspace: 'treasury', + key: 'SeigniorageBurdenTarget', + value: '"0.67"', + }, + { + subspace: 'treasury', + key: 'MiningIncrement', + value: '"1.07"', + }, + { subspace: 'treasury', key: 'WindowShort', value: '"4"' }, + { subspace: 'treasury', key: 'WindowLong', value: '"52"' }, + { subspace: 'treasury', key: 'WindowProbation', value: '"12"' }, + { subspace: 'oracle', key: 'VotePeriod', value: '"5"' }, + { + subspace: 'oracle', + key: 'VoteThreshold', + value: '"0.5"', + }, + { + subspace: 'oracle', + key: 'RewardBand', + value: '"0.12"', + }, + { + subspace: 'oracle', + key: 'RewardDistributionWindow', + value: '"9400000"', + }, + { + subspace: 'oracle', + key: 'Whitelist', + value: + '[{"name":"ukrw","tobin_tax":"0.003500000000000000"},{"name":"usdr","tobin_tax":"0.003500000000000000"},{"name":"uusd","tobin_tax":"0.003500000000000000"},{"name":"umnt","tobin_tax":"0.020000000000000000"},{"name":"ueur","tobin_tax":"0.003500000000000000"},{"name":"ucny","tobin_tax":"0.003500000000000000"},{"name":"ujpy","tobin_tax":"0.003500000000000000"},{"name":"ugbp","tobin_tax":"0.003500000000000000"},{"name":"uinr","tobin_tax":"0.003500000000000000"},{"name":"ucad","tobin_tax":"0.003500000000000000"},{"name":"uchf","tobin_tax":"0.003500000000000000"},{"name":"uhkd","tobin_tax":"0.003500000000000000"},{"name":"usgd","tobin_tax":"0.003500000000000000"},{"name":"uaud","tobin_tax":"0.003500000000000000"},{"name":"uthb","tobin_tax":"0.007500000000000000"},{"name":"usek","tobin_tax":"0.003500000000000000"},{"name":"udkk","tobin_tax":"0.003500000000000000"},{"name":"unok","tobin_tax":"0.003500000000000000"},{"name":"uidr","tobin_tax":"0.007500000000000000"},{"name":"uphp","tobin_tax":"0.007500000000000000"},{"name":"umyr","tobin_tax":"0.003500000000000000"},{"name":"utwd","tobin_tax":"0.003500000000000000"}]', + }, + { + subspace: 'oracle', + key: 'SlashFraction', + value: '"0.0001"', + }, + { subspace: 'oracle', key: 'SlashWindow', value: '"432000"' }, + { + subspace: 'oracle', + key: 'MinValidPerWindow', + value: '"0.05"', + }, + { subspace: 'market', key: 'PoolRecoveryPeriod', value: '"36"' }, + { + subspace: 'market', + key: 'BasePool', + value: '"50000000000000.0"', + }, + { + subspace: 'market', + key: 'MinStabilitySpread', + value: '"0.005"', + }, + { + subspace: 'gov', + key: 'depositparams', + value: + '{"min_deposit":[{"denom":"uluna","amount":"10000000"}],"max_deposit_period":"300000000000"}', + }, + { + subspace: 'gov', + key: 'votingparams', + value: '{"voting_period":"300000000000"}', + }, + { + subspace: 'gov', + key: 'tallyparams', + value: '{"quorum":"0.4","threshold":"0.5","veto_threshold":"0.334"}', + }, + { + subspace: 'mint', + key: 'MintDenom', + value: '"uluna"', + }, + { + subspace: 'mint', + key: 'InflationRateChange', + value: '"0.00"', + }, + { + subspace: 'mint', + key: 'InflationMin', + value: '"0.2"', + }, + { + subspace: 'mint', + key: 'InflationMax', + value: '"0.07"', + }, + { + subspace: 'mint', + key: 'GoalBonded', + value: '"0.67"', + }, + { + subspace: 'mint', + key: 'BlocksPerYear', + value: '"6311520"', + }, + { + subspace: 'wasm', + key: 'MaxContractSize', + value: '"614400"', + }, + { + subspace: 'wasm', + key: 'MaxContractGas', + value: '"20000000"', + }, + { + subspace: 'wasm', + key: 'MaxContractMsgSize', + value: '"4096"', + }, + ], + }, +}; + describe('ParameterChangeProposal', () => { - it('parses parameter change proposals (amino)', () => { + it('legacy: parses parameter change proposals (amino)', () => { expect(ParameterChangeProposal.fromAmino(aminoJson)).toBeTruthy(); }); - it('parses parameter change proposals (data)', () => { + it('legacy: parses parameter change proposals (data)', () => { const p = new ParameterChangeProposal( 'testing params', 'yay!', @@ -206,4 +392,24 @@ describe('ParameterChangeProposal', () => { ...aminoJson.value, }); }); + + it('parses parameter change proposals (amino)', () => { + expect(ParameterChangeProposal.fromAmino(aminoJsonV2)).toBeTruthy(); + }); + + it('parses parameter change proposals (data)', () => { + const p = new ParameterChangeProposal( + 'testing params', + 'yay!', + aminoJsonV2.value.changes + ); + const data = p.toData(); + + expect(ParameterChangeProposal.fromData(data)).toEqual(p); // check that serialization / deserialization is consistent + // check that output is consistent with json + expect(data).toMatchObject({ + '@type': '/cosmos.params.v1beta1.ParameterChangeProposal', + ...aminoJsonV2.value, + }); + }); }); diff --git a/src/core/params/proposals/ParameterChangeProposal.ts b/src/core/params/proposals/ParameterChangeProposal.ts index 4a4750f98..92ec5bc04 100644 --- a/src/core/params/proposals/ParameterChangeProposal.ts +++ b/src/core/params/proposals/ParameterChangeProposal.ts @@ -57,8 +57,10 @@ export class ParameterChangeProposal extends JSONSerializable< } public static fromAmino( - data: ParameterChangeProposal.Amino + data: ParameterChangeProposal.Amino, + _?: boolean ): ParameterChangeProposal { + _; const { value: { title, description, changes }, } = data; @@ -69,10 +71,12 @@ export class ParameterChangeProposal extends JSONSerializable< ); } - public toAmino(): ParameterChangeProposal.Amino { + public toAmino(isClassic?: boolean): ParameterChangeProposal.Amino { const { title, description, changes } = this; return { - type: 'params/ParameterChangeProposal', + type: isClassic + ? 'params/ParameterChangeProposal' + : 'cosmos-sdk/ParameterChangeProposal', value: { title, description, @@ -82,8 +86,10 @@ export class ParameterChangeProposal extends JSONSerializable< } public static fromData( - proto: ParameterChangeProposal.Data + proto: ParameterChangeProposal.Data, + _?: boolean ): ParameterChangeProposal { + _; const { title, description, changes } = proto; return new ParameterChangeProposal( title, @@ -92,7 +98,8 @@ export class ParameterChangeProposal extends JSONSerializable< ); } - public toData(): ParameterChangeProposal.Data { + public toData(_?: boolean): ParameterChangeProposal.Data { + _; const { title, description, changes } = this; return { '@type': '/cosmos.params.v1beta1.ParameterChangeProposal', @@ -103,8 +110,10 @@ export class ParameterChangeProposal extends JSONSerializable< } public static fromProto( - proto: ParameterChangeProposal.Proto + proto: ParameterChangeProposal.Proto, + _?: boolean ): ParameterChangeProposal { + _; return new ParameterChangeProposal( proto.title, proto.description, @@ -112,7 +121,8 @@ export class ParameterChangeProposal extends JSONSerializable< ); } - public toProto(): ParameterChangeProposal.Proto { + public toProto(_?: boolean): ParameterChangeProposal.Proto { + _; const { title, description, changes } = this; return ParameterChangeProposal_pb.fromPartial({ changes: changes.toProto(), @@ -121,23 +131,31 @@ export class ParameterChangeProposal extends JSONSerializable< }); } - public packAny(): Any { + public packAny(isClassic?: boolean): Any { return Any.fromPartial({ typeUrl: '/cosmos.params.v1beta1.ParameterChangeProposal', - value: ParameterChangeProposal_pb.encode(this.toProto()).finish(), + value: ParameterChangeProposal_pb.encode( + this.toProto(isClassic) + ).finish(), }); } - public static unpackAny(msgAny: Any): ParameterChangeProposal { + public static unpackAny( + msgAny: Any, + isClassic?: boolean + ): ParameterChangeProposal { return ParameterChangeProposal.fromProto( - ParameterChangeProposal_pb.decode(msgAny.value) + ParameterChangeProposal_pb.decode(msgAny.value), + isClassic ); } } export namespace ParameterChangeProposal { export interface Amino { - type: 'params/ParameterChangeProposal'; + type: + | 'params/ParameterChangeProposal' + | 'cosmos-sdk/ParameterChangeProposal'; value: { title: string; description: string; diff --git a/src/core/slashing/msgs/MsgUnjail.spec.ts b/src/core/slashing/msgs/MsgUnjail.spec.ts index 3b408fb04..90233ab74 100644 --- a/src/core/slashing/msgs/MsgUnjail.spec.ts +++ b/src/core/slashing/msgs/MsgUnjail.spec.ts @@ -2,10 +2,21 @@ import { MsgUnjail } from './MsgUnjail'; const MsgUnjailAmino = require('./MsgUnjail.data.json'); describe('MsgUnjail', () => { + it('legacy: deserializes', () => { + MsgUnjailAmino.txs.forEach((txinfo: any) => { + txinfo.tx.value.msg.forEach((msg: any) => { + if (msg.type == 'slashing/MsgUnjail') { + const e = MsgUnjail.fromAmino(msg, true); + expect(e.toAmino(true)).toEqual(msg); + } + }); + }); + }); + it('deserializes', () => { MsgUnjailAmino.txs.forEach((txinfo: any) => { txinfo.tx.value.msg.forEach((msg: any) => { - if (msg.type == 'cosmos/MsgUnjail') { + if (msg.type == 'cosmos-sdk/MsgUnjail') { const e = MsgUnjail.fromAmino(msg); expect(e.toAmino()).toEqual(msg); } diff --git a/src/core/slashing/msgs/MsgUnjail.ts b/src/core/slashing/msgs/MsgUnjail.ts index c8848910f..8390245c2 100644 --- a/src/core/slashing/msgs/MsgUnjail.ts +++ b/src/core/slashing/msgs/MsgUnjail.ts @@ -23,29 +23,32 @@ export class MsgUnjail extends JSONSerializable< super(); } - public static fromAmino(data: MsgUnjail.Amino): MsgUnjail { + public static fromAmino(data: MsgUnjail.Amino, _?: boolean): MsgUnjail { + _; const { value: { address }, } = data; return new MsgUnjail(address); } - public toAmino(): MsgUnjail.Amino { + public toAmino(isClassic?: boolean): MsgUnjail.Amino { const { address } = this; return { - type: 'slashing/MsgUnjail', + type: isClassic ? 'slashing/MsgUnjail' : 'cosmos-sdk/MsgUnjail', value: { address, }, }; } - public static fromData(proto: MsgUnjail.Data): MsgUnjail { + public static fromData(proto: MsgUnjail.Data, _?: boolean): MsgUnjail { + _; const { address } = proto; return new MsgUnjail(address); } - public toData(): MsgUnjail.Data { + public toData(_?: boolean): MsgUnjail.Data { + _; const { address } = this; return { '@type': '/cosmos.slashing.v1beta1.MsgUnjail', @@ -53,32 +56,36 @@ export class MsgUnjail extends JSONSerializable< }; } - public static fromProto(proto: MsgUnjail.Proto): MsgUnjail { + public static fromProto(proto: MsgUnjail.Proto, _?: boolean): MsgUnjail { + _; return new MsgUnjail(proto.validatorAddr); } - public toProto(): MsgUnjail.Proto { + public toProto(_?: boolean): MsgUnjail.Proto { + _; const { address } = this; return MsgUnjail_pb.fromPartial({ validatorAddr: address, }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/cosmos.slashing.v1beta1.MsgUnjail', value: MsgUnjail_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgUnjail { + public static unpackAny(msgAny: Any, _?: boolean): MsgUnjail { + _; return MsgUnjail.fromProto(MsgUnjail_pb.decode(msgAny.value)); } } export namespace MsgUnjail { export interface Amino { - type: 'slashing/MsgUnjail'; + type: 'slashing/MsgUnjail' | 'cosmos-sdk/MsgUnjail'; value: { address: ValAddress; }; diff --git a/src/core/staking/msgs/MsgBeginRedelegate.spec.ts b/src/core/staking/msgs/MsgBeginRedelegate.spec.ts index 293050ff2..9cb3a4c81 100644 --- a/src/core/staking/msgs/MsgBeginRedelegate.spec.ts +++ b/src/core/staking/msgs/MsgBeginRedelegate.spec.ts @@ -1,15 +1,58 @@ import { MsgBeginRedelegate } from './MsgBeginRedelegate'; + +import { Coin } from '../../Coin'; const MsgBeginRedelegateAmino = require('./MsgBeginRedelegate.data.json'); describe('MsgBeginRedelegate', () => { - it('deserializes', () => { + it('legacy deserialize', () => { MsgBeginRedelegateAmino.txs.forEach((txinfo: any) => { txinfo.tx.value.msg.forEach((msg: any) => { if (msg.type == 'staking/MsgBeginRedelegate') { const e = MsgBeginRedelegate.fromAmino(msg); - expect(e.toAmino()).toEqual(msg); + expect(e.toAmino(true)).toEqual(msg); } }); }); }); + + it('deserialize amino', () => { + const send = MsgBeginRedelegate.fromAmino({ + type: 'cosmos-sdk/MsgBeginRedelegate', + value: { + delegator_address: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + validator_src_address: + 'terravaloper1guxk2q4wn92fw0mchx2rhsenjvq0hj9pzp0ngt', + validator_dst_address: + 'terravaloper1fa2gmum9kl9ms73hnrhvg0rkk0s9jvqxpunyr3', + amount: { + denom: 'uluna', + amount: '8102024952', + }, + }, + }); + + expect(send).toMatchObject({ + delegator_address: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + validator_src_address: + 'terravaloper1guxk2q4wn92fw0mchx2rhsenjvq0hj9pzp0ngt', + validator_dst_address: + 'terravaloper1fa2gmum9kl9ms73hnrhvg0rkk0s9jvqxpunyr3', + amount: new Coin('uluna', '8102024952'), + }); + + expect(send.toAmino()).toMatchObject({ + type: 'cosmos-sdk/MsgBeginRedelegate', + value: { + delegator_address: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + validator_src_address: + 'terravaloper1guxk2q4wn92fw0mchx2rhsenjvq0hj9pzp0ngt', + validator_dst_address: + 'terravaloper1fa2gmum9kl9ms73hnrhvg0rkk0s9jvqxpunyr3', + amount: { + denom: 'uluna', + amount: '8102024952', + }, + }, + }); + }); }); diff --git a/src/core/staking/msgs/MsgBeginRedelegate.ts b/src/core/staking/msgs/MsgBeginRedelegate.ts index e9744ea6d..ee3f1c686 100644 --- a/src/core/staking/msgs/MsgBeginRedelegate.ts +++ b/src/core/staking/msgs/MsgBeginRedelegate.ts @@ -1,9 +1,10 @@ import { JSONSerializable } from '../../../util/json'; import { Coin } from '../../Coin'; import { AccAddress, ValAddress } from '../../bech32'; +// import { Any } from '@terra-money/legacy.proto/google/protobuf/any'; +// import { MsgBeginRedelegate as MsgBeginRedelegate_pb } from '@terra-money/legacy.proto/cosmos/staking/v1beta1/tx'; import { Any } from '@terra-money/terra.proto/google/protobuf/any'; import { MsgBeginRedelegate as MsgBeginRedelegate_pb } from '@terra-money/terra.proto/cosmos/staking/v1beta1/tx'; - /** * A delegator can choose to redelegate their bonded Luna and transfer a delegation * amount from one validator to another. Unlike undelegating, redelegations do not incur @@ -30,7 +31,11 @@ export class MsgBeginRedelegate extends JSONSerializable< super(); } - public static fromAmino(data: MsgBeginRedelegate.Amino): MsgBeginRedelegate { + public static fromAmino( + data: MsgBeginRedelegate.Amino, + _?: boolean + ): MsgBeginRedelegate { + _; const { value: { delegator_address, @@ -47,7 +52,7 @@ export class MsgBeginRedelegate extends JSONSerializable< ); } - public toAmino(): MsgBeginRedelegate.Amino { + public toAmino(isClassic?: boolean): MsgBeginRedelegate.Amino { const { delegator_address, validator_src_address, @@ -55,7 +60,9 @@ export class MsgBeginRedelegate extends JSONSerializable< amount, } = this; return { - type: 'staking/MsgBeginRedelegate', + type: isClassic + ? 'staking/MsgBeginRedelegate' + : 'cosmos-sdk/MsgBeginRedelegate', value: { delegator_address, validator_src_address, @@ -65,7 +72,11 @@ export class MsgBeginRedelegate extends JSONSerializable< }; } - public static fromData(data: MsgBeginRedelegate.Data): MsgBeginRedelegate { + public static fromData( + data: MsgBeginRedelegate.Data, + _?: boolean + ): MsgBeginRedelegate { + _; const { delegator_address, validator_src_address, @@ -80,7 +91,8 @@ export class MsgBeginRedelegate extends JSONSerializable< ); } - public toData(): MsgBeginRedelegate.Data { + public toData(_?: boolean): MsgBeginRedelegate.Data { + _; const { delegator_address, validator_src_address, @@ -96,7 +108,11 @@ export class MsgBeginRedelegate extends JSONSerializable< }; } - public static fromProto(proto: MsgBeginRedelegate.Proto): MsgBeginRedelegate { + public static fromProto( + proto: MsgBeginRedelegate.Proto, + _?: boolean + ): MsgBeginRedelegate { + _; return new MsgBeginRedelegate( proto.delegatorAddress, proto.validatorSrcAddress, @@ -105,7 +121,8 @@ export class MsgBeginRedelegate extends JSONSerializable< ); } - public toProto(): MsgBeginRedelegate.Proto { + public toProto(_?: boolean): MsgBeginRedelegate.Proto { + _; const { delegator_address, validator_src_address, @@ -120,14 +137,16 @@ export class MsgBeginRedelegate extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/cosmos.staking.v1beta1.MsgBeginRedelegate', value: MsgBeginRedelegate_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgBeginRedelegate { + public static unpackAny(msgAny: Any, _?: boolean): MsgBeginRedelegate { + _; return MsgBeginRedelegate.fromProto( MsgBeginRedelegate_pb.decode(msgAny.value) ); @@ -136,7 +155,7 @@ export class MsgBeginRedelegate extends JSONSerializable< export namespace MsgBeginRedelegate { export interface Amino { - type: 'staking/MsgBeginRedelegate'; + type: 'staking/MsgBeginRedelegate' | 'cosmos-sdk/MsgBeginRedelegate'; value: { delegator_address: AccAddress; validator_src_address: ValAddress; diff --git a/src/core/staking/msgs/MsgCreateValidator.spec.ts b/src/core/staking/msgs/MsgCreateValidator.spec.ts index d2fe668f2..1cda84f1d 100644 --- a/src/core/staking/msgs/MsgCreateValidator.spec.ts +++ b/src/core/staking/msgs/MsgCreateValidator.spec.ts @@ -1,15 +1,73 @@ import { MsgCreateValidator } from './MsgCreateValidator'; +import { Validator } from '../Validator'; const MsgCreateValidatorAmino = require('./MsgCreateValidator.data.json'); describe('MsgCreateValidator', () => { - it('deserializes', () => { + it('legacy deserialize', () => { MsgCreateValidatorAmino.txs.forEach((txinfo: any) => { txinfo.tx.value.msg.forEach((msg: any) => { if (msg.type == 'staking/MsgCreateValidator') { const e = MsgCreateValidator.fromAmino(msg); - expect(e.toAmino()).toEqual(msg); + expect(e.toAmino(true)).toEqual(msg); } }); }); }); + + it('deserialize amino', () => { + const description: Validator.Description.Amino = { + moniker: 'test', + website: 'test', + identity: 'test', + details: 'test', + security_contact: 'test', + }; + const send = MsgCreateValidator.fromAmino({ + type: 'cosmos-sdk/MsgCreateValidator', + value: { + description: Validator.Description.fromAmino(description), + commission: { + rate: '0.100000000000000000', + max_rate: '0.200000000000000000', + max_change_rate: '0.010000000000000000', + }, + min_self_delegation: '1', + delegator_address: 'terra1r2kcrnsq8jfu5zyeyqygrj80x6chf82ae50ed5', + validator_address: + 'terravaloper1r2kcrnsq8jfu5zyeyqygrj80x6chf82aemrya8', + pubkey: { + type: 'tendermint/PubKeyEd25519', + value: 'b8RizVY2WHFTHLU/8HVaJApMAw5bhvdNuJtXPVAS5LA=', + }, + value: { + denom: 'uluna', + amount: '10000000', + }, + }, + }); + + expect(send.toAmino()).toMatchObject({ + type: 'cosmos-sdk/MsgCreateValidator', + value: { + description: Validator.Description.fromAmino(description), + commission: { + rate: '0.100000000000000000', + max_rate: '0.200000000000000000', + max_change_rate: '0.010000000000000000', + }, + min_self_delegation: '1', + delegator_address: 'terra1r2kcrnsq8jfu5zyeyqygrj80x6chf82ae50ed5', + validator_address: + 'terravaloper1r2kcrnsq8jfu5zyeyqygrj80x6chf82aemrya8', + pubkey: { + type: 'tendermint/PubKeyEd25519', + value: 'b8RizVY2WHFTHLU/8HVaJApMAw5bhvdNuJtXPVAS5LA=', + }, + value: { + denom: 'uluna', + amount: '10000000', + }, + }, + }); + }); }); diff --git a/src/core/staking/msgs/MsgCreateValidator.ts b/src/core/staking/msgs/MsgCreateValidator.ts index 61b6eb267..9ec12a9be 100644 --- a/src/core/staking/msgs/MsgCreateValidator.ts +++ b/src/core/staking/msgs/MsgCreateValidator.ts @@ -3,6 +3,8 @@ import { Coin } from '../../Coin'; import { Int } from '../../numeric'; import { AccAddress, ValAddress } from '../../bech32'; import { Validator } from '../Validator'; +// import { Any } from '@terra-money/legacy.proto/google/protobuf/any'; +// import { MsgCreateValidator as MsgCreateValidator_pb } from '@terra-money/legacy.proto/cosmos/staking/v1beta1/tx'; import { Any } from '@terra-money/terra.proto/google/protobuf/any'; import { MsgCreateValidator as MsgCreateValidator_pb } from '@terra-money/terra.proto/cosmos/staking/v1beta1/tx'; import { ValConsPublicKey, PublicKey } from '../../PublicKey'; @@ -38,7 +40,11 @@ export class MsgCreateValidator extends JSONSerializable< super(); } - public static fromAmino(data: MsgCreateValidator.Amino): MsgCreateValidator { + public static fromAmino( + data: MsgCreateValidator.Amino, + _?: boolean + ): MsgCreateValidator { + _; const { value: { description, @@ -61,7 +67,7 @@ export class MsgCreateValidator extends JSONSerializable< ); } - public toAmino(): MsgCreateValidator.Amino { + public toAmino(isClassic?: boolean): MsgCreateValidator.Amino { const { description, commission, @@ -72,7 +78,9 @@ export class MsgCreateValidator extends JSONSerializable< value, } = this; return { - type: 'staking/MsgCreateValidator', + type: isClassic + ? 'staking/MsgCreateValidator' + : 'cosmos-sdk/MsgCreateValidator', value: { description, commission: commission.toAmino(), @@ -85,7 +93,11 @@ export class MsgCreateValidator extends JSONSerializable< }; } - public static fromData(data: MsgCreateValidator.Data): MsgCreateValidator { + public static fromData( + data: MsgCreateValidator.Data, + _?: boolean + ): MsgCreateValidator { + _; const { description, commission, @@ -106,7 +118,8 @@ export class MsgCreateValidator extends JSONSerializable< ); } - public toData(): MsgCreateValidator.Data { + public toData(_?: boolean): MsgCreateValidator.Data { + _; const { description, commission, @@ -128,7 +141,11 @@ export class MsgCreateValidator extends JSONSerializable< }; } - public static fromProto(proto: MsgCreateValidator.Proto): MsgCreateValidator { + public static fromProto( + proto: MsgCreateValidator.Proto, + _?: boolean + ): MsgCreateValidator { + _; return new MsgCreateValidator( Validator.Description.fromProto( proto.description as Validator.Description.Proto @@ -144,7 +161,8 @@ export class MsgCreateValidator extends JSONSerializable< ); } - public toProto(): MsgCreateValidator.Proto { + public toProto(_?: boolean): MsgCreateValidator.Proto { + _; const { description, commission, @@ -165,14 +183,16 @@ export class MsgCreateValidator extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/cosmos.staking.v1beta1.MsgCreateValidator', value: MsgCreateValidator_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgCreateValidator { + public static unpackAny(msgAny: Any, _?: boolean): MsgCreateValidator { + _; return MsgCreateValidator.fromProto( MsgCreateValidator_pb.decode(msgAny.value) ); @@ -181,7 +201,7 @@ export class MsgCreateValidator extends JSONSerializable< export namespace MsgCreateValidator { export interface Amino { - type: 'staking/MsgCreateValidator'; + type: 'staking/MsgCreateValidator' | 'cosmos-sdk/MsgCreateValidator'; value: { description: Validator.Description; commission: Validator.CommissionRates.Amino; diff --git a/src/core/staking/msgs/MsgDelegate.spec.ts b/src/core/staking/msgs/MsgDelegate.spec.ts index 02d4dd3bf..0cf3ad012 100644 --- a/src/core/staking/msgs/MsgDelegate.spec.ts +++ b/src/core/staking/msgs/MsgDelegate.spec.ts @@ -1,15 +1,50 @@ import { MsgDelegate } from './MsgDelegate'; +import { Coin } from '../../Coin'; const MsgDelegateAmino = require('./MsgDelegate.data.json'); describe('MsgDelegate', () => { - it('deserializes', () => { + it('legacy deserialize', () => { MsgDelegateAmino.txs.forEach((txinfo: any) => { txinfo.tx.value.msg.forEach((msg: any) => { if (msg.type == 'staking/MsgDelegate') { const e = MsgDelegate.fromAmino(msg); - expect(e.toAmino()).toEqual(msg); + expect(e.toAmino(true)).toEqual(msg); } }); }); }); + + it('deserialize amino', () => { + const send = MsgDelegate.fromAmino({ + type: 'cosmos-sdk/MsgDelegate', + value: { + delegator_address: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + validator_address: + 'terravaloper1guxk2q4wn92fw0mchx2rhsenjvq0hj9pzp0ngt', + amount: { + denom: 'uluna', + amount: '8102024952', + }, + }, + }); + + expect(send).toMatchObject({ + delegator_address: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + validator_address: 'terravaloper1guxk2q4wn92fw0mchx2rhsenjvq0hj9pzp0ngt', + amount: new Coin('uluna', '8102024952'), + }); + + expect(send.toAmino()).toMatchObject({ + type: 'cosmos-sdk/MsgDelegate', + value: { + delegator_address: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + validator_address: + 'terravaloper1guxk2q4wn92fw0mchx2rhsenjvq0hj9pzp0ngt', + amount: { + denom: 'uluna', + amount: '8102024952', + }, + }, + }); + }); }); diff --git a/src/core/staking/msgs/MsgDelegate.ts b/src/core/staking/msgs/MsgDelegate.ts index deb3176dd..1aabab1b1 100644 --- a/src/core/staking/msgs/MsgDelegate.ts +++ b/src/core/staking/msgs/MsgDelegate.ts @@ -1,9 +1,10 @@ import { Coin } from '../../Coin'; import { JSONSerializable } from '../../../util/json'; import { AccAddress, ValAddress } from '../../bech32'; +// import { Any } from '@terra-money/legacy.proto/google/protobuf/any'; +// import { MsgDelegate as MsgDelegate_pb } from '@terra-money/legacy.proto/cosmos/staking/v1beta1/tx'; import { Any } from '@terra-money/terra.proto/google/protobuf/any'; import { MsgDelegate as MsgDelegate_pb } from '@terra-money/terra.proto/cosmos/staking/v1beta1/tx'; - /** * A delegator can submit this message to send more Luna to be staked through a * validator delegate. @@ -27,7 +28,8 @@ export class MsgDelegate extends JSONSerializable< super(); } - public static fromAmino(data: MsgDelegate.Amino): MsgDelegate { + public static fromAmino(data: MsgDelegate.Amino, _?: boolean): MsgDelegate { + _; const { value: { delegator_address, validator_address, amount }, } = data; @@ -38,10 +40,10 @@ export class MsgDelegate extends JSONSerializable< ); } - public toAmino(): MsgDelegate.Amino { + public toAmino(isClassic?: boolean): MsgDelegate.Amino { const { delegator_address, validator_address, amount } = this; return { - type: 'staking/MsgDelegate', + type: isClassic ? 'staking/MsgDelegate' : 'cosmos-sdk/MsgDelegate', value: { delegator_address, validator_address, @@ -50,7 +52,8 @@ export class MsgDelegate extends JSONSerializable< }; } - public static fromProto(proto: MsgDelegate.Proto): MsgDelegate { + public static fromProto(proto: MsgDelegate.Proto, _?: boolean): MsgDelegate { + _; return new MsgDelegate( proto.delegatorAddress, proto.validatorAddress, @@ -58,7 +61,8 @@ export class MsgDelegate extends JSONSerializable< ); } - public toProto(): MsgDelegate.Proto { + public toProto(_?: boolean): MsgDelegate.Proto { + _; const { delegator_address, validator_address, amount } = this; return MsgDelegate_pb.fromPartial({ amount: amount.toProto(), @@ -67,18 +71,21 @@ export class MsgDelegate extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/cosmos.staking.v1beta1.MsgDelegate', value: MsgDelegate_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgDelegate { + public static unpackAny(msgAny: Any, _?: boolean): MsgDelegate { + _; return MsgDelegate.fromProto(MsgDelegate_pb.decode(msgAny.value)); } - public static fromData(data: MsgDelegate.Data): MsgDelegate { + public static fromData(data: MsgDelegate.Data, _?: boolean): MsgDelegate { + _; const { delegator_address, validator_address, amount } = data; return new MsgDelegate( delegator_address, @@ -87,7 +94,8 @@ export class MsgDelegate extends JSONSerializable< ); } - public toData(): MsgDelegate.Data { + public toData(_?: boolean): MsgDelegate.Data { + _; const { delegator_address, validator_address, amount } = this; return { '@type': '/cosmos.staking.v1beta1.MsgDelegate', @@ -100,7 +108,7 @@ export class MsgDelegate extends JSONSerializable< export namespace MsgDelegate { export interface Amino { - type: 'staking/MsgDelegate'; + type: 'staking/MsgDelegate' | 'cosmos-sdk/MsgDelegate'; value: { delegator_address: AccAddress; validator_address: ValAddress; diff --git a/src/core/staking/msgs/MsgEditValidator.spec.ts b/src/core/staking/msgs/MsgEditValidator.spec.ts index de52d09bf..fdbcbd940 100644 --- a/src/core/staking/msgs/MsgEditValidator.spec.ts +++ b/src/core/staking/msgs/MsgEditValidator.spec.ts @@ -6,8 +6,8 @@ describe('MsgEditValidator', () => { MsgEditValidatorAmino.txs.forEach((txinfo: any) => { txinfo.tx.value.msg.forEach((msg: any) => { if (msg.type == 'staking/MsgEditValidator') { - const e = MsgEditValidator.fromAmino(msg); - expect(e.toAmino()).toEqual(msg); + const e = MsgEditValidator.fromAmino(msg, true); + expect(e.toAmino(true)).toEqual(msg); } }); }); diff --git a/src/core/staking/msgs/MsgEditValidator.ts b/src/core/staking/msgs/MsgEditValidator.ts index cd4fb9249..ba28b8e30 100644 --- a/src/core/staking/msgs/MsgEditValidator.ts +++ b/src/core/staking/msgs/MsgEditValidator.ts @@ -2,6 +2,8 @@ import { JSONSerializable } from '../../../util/json'; import { Dec, Int } from '../../numeric'; import { ValAddress } from '../../bech32'; import { Validator } from '../Validator'; +// import { Any } from '@terra-money/legacy.proto/google/protobuf/any'; +// import { MsgEditValidator as MsgEditValidator_pb } from '@terra-money/legacy.proto/cosmos/staking/v1beta1/tx'; import { Any } from '@terra-money/terra.proto/google/protobuf/any'; import { MsgEditValidator as MsgEditValidator_pb } from '@terra-money/terra.proto/cosmos/staking/v1beta1/tx'; @@ -33,7 +35,11 @@ export class MsgEditValidator extends JSONSerializable< super(); } - public static fromAmino(data: MsgEditValidator.Amino): MsgEditValidator { + public static fromAmino( + data: MsgEditValidator.Amino, + _?: boolean + ): MsgEditValidator { + _; const { value: { description, @@ -50,7 +56,7 @@ export class MsgEditValidator extends JSONSerializable< ); } - public toAmino(): MsgEditValidator.Amino { + public toAmino(isClassic?: boolean): MsgEditValidator.Amino { const { description, validator_address, @@ -58,7 +64,9 @@ export class MsgEditValidator extends JSONSerializable< min_self_delegation, } = this; return { - type: 'staking/MsgEditValidator', + type: isClassic + ? 'staking/MsgEditValidator' + : 'cosmos-sdk/MsgEditValidator', value: { description, validator_address, @@ -72,7 +80,11 @@ export class MsgEditValidator extends JSONSerializable< }; } - public static fromProto(data: MsgEditValidator.Proto): MsgEditValidator { + public static fromProto( + data: MsgEditValidator.Proto, + _?: boolean + ): MsgEditValidator { + _; return new MsgEditValidator( Validator.Description.fromProto( data.description as Validator.Description.Proto @@ -85,7 +97,8 @@ export class MsgEditValidator extends JSONSerializable< ); } - public toProto(): MsgEditValidator.Proto { + public toProto(_?: boolean): MsgEditValidator.Proto { + _; const { description, validator_address, @@ -100,18 +113,24 @@ export class MsgEditValidator extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/cosmos.staking.v1beta1.MsgEditValidator', value: MsgEditValidator_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgEditValidator { + public static unpackAny(msgAny: Any, _?: boolean): MsgEditValidator { + _; return MsgEditValidator.fromProto(MsgEditValidator_pb.decode(msgAny.value)); } - public static fromData(data: MsgEditValidator.Data): MsgEditValidator { + public static fromData( + data: MsgEditValidator.Data, + _?: boolean + ): MsgEditValidator { + _; const { description, validator_address, @@ -126,7 +145,8 @@ export class MsgEditValidator extends JSONSerializable< ); } - public toData(): MsgEditValidator.Data { + public toData(_?: boolean): MsgEditValidator.Data { + _; const { description, validator_address, @@ -155,7 +175,7 @@ export namespace MsgEditValidator { }; export interface Amino { - type: 'staking/MsgEditValidator'; + type: 'staking/MsgEditValidator' | 'cosmos-sdk/MsgEditValidator'; value: { description: Validator.Description.Amino; validator_address: ValAddress; diff --git a/src/core/staking/msgs/MsgUndelegate.spec.ts b/src/core/staking/msgs/MsgUndelegate.spec.ts index bc9750613..019815f57 100644 --- a/src/core/staking/msgs/MsgUndelegate.spec.ts +++ b/src/core/staking/msgs/MsgUndelegate.spec.ts @@ -1,15 +1,50 @@ import { MsgUndelegate } from './MsgUndelegate'; +import { Coin } from '../../Coin'; const MsgUndelegateAmino = require('./MsgUndelegate.data.json'); describe('MsgUndelegate', () => { - it('deserializes', () => { + it('legacy deserialize', () => { MsgUndelegateAmino.txs.forEach((txinfo: any) => { txinfo.tx.value.msg.forEach((msg: any) => { if (msg.type == 'staking/MsgUndelegate') { const e = MsgUndelegate.fromAmino(msg); - expect(e.toAmino()).toEqual(msg); + expect(e.toAmino(true)).toEqual(msg); } }); }); }); + + it('deserialize amino', () => { + const send = MsgUndelegate.fromAmino({ + type: 'cosmos-sdk/MsgUndelegate', + value: { + delegator_address: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + validator_address: + 'terravaloper1guxk2q4wn92fw0mchx2rhsenjvq0hj9pzp0ngt', + amount: { + denom: 'uluna', + amount: '8102024952', + }, + }, + }); + + expect(send).toMatchObject({ + delegator_address: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + validator_address: 'terravaloper1guxk2q4wn92fw0mchx2rhsenjvq0hj9pzp0ngt', + amount: new Coin('uluna', '8102024952'), + }); + + expect(send.toAmino()).toMatchObject({ + type: 'cosmos-sdk/MsgUndelegate', + value: { + delegator_address: 'terra1y4umfuqfg76t8mfcff6zzx7elvy93jtp4xcdvw', + validator_address: + 'terravaloper1guxk2q4wn92fw0mchx2rhsenjvq0hj9pzp0ngt', + amount: { + denom: 'uluna', + amount: '8102024952', + }, + }, + }); + }); }); diff --git a/src/core/staking/msgs/MsgUndelegate.ts b/src/core/staking/msgs/MsgUndelegate.ts index f975d3e43..ff4441ca5 100644 --- a/src/core/staking/msgs/MsgUndelegate.ts +++ b/src/core/staking/msgs/MsgUndelegate.ts @@ -1,6 +1,8 @@ import { Coin } from '../../Coin'; import { JSONSerializable } from '../../../util/json'; import { AccAddress, ValAddress } from '../../bech32'; +// import { Any } from '@terra-money/legacy.proto/google/protobuf/any'; +// import { MsgUndelegate as MsgUndelegate_pb } from '@terra-money/legacy.proto/cosmos/staking/v1beta1/tx'; import { Any } from '@terra-money/terra.proto/google/protobuf/any'; import { MsgUndelegate as MsgUndelegate_pb } from '@terra-money/terra.proto/cosmos/staking/v1beta1/tx'; @@ -27,7 +29,11 @@ export class MsgUndelegate extends JSONSerializable< super(); } - public static fromAmino(data: MsgUndelegate.Amino): MsgUndelegate { + public static fromAmino( + data: MsgUndelegate.Amino, + _?: boolean + ): MsgUndelegate { + _; const { value: { delegator_address, validator_address, amount }, } = data; @@ -38,10 +44,10 @@ export class MsgUndelegate extends JSONSerializable< ); } - public toAmino(): MsgUndelegate.Amino { + public toAmino(isClassic?: boolean): MsgUndelegate.Amino { const { delegator_address, validator_address, amount } = this; return { - type: 'staking/MsgUndelegate', + type: isClassic ? 'staking/MsgUndelegate' : 'cosmos-sdk/MsgUndelegate', value: { delegator_address, validator_address, @@ -50,7 +56,11 @@ export class MsgUndelegate extends JSONSerializable< }; } - public static fromProto(proto: MsgUndelegate.Proto): MsgUndelegate { + public static fromProto( + proto: MsgUndelegate.Proto, + _?: boolean + ): MsgUndelegate { + _; return new MsgUndelegate( proto.delegatorAddress, proto.validatorAddress, @@ -58,7 +68,8 @@ export class MsgUndelegate extends JSONSerializable< ); } - public toProto(): MsgUndelegate.Proto { + public toProto(_?: boolean): MsgUndelegate.Proto { + _; const { delegator_address, validator_address, amount } = this; return MsgUndelegate_pb.fromPartial({ amount: amount.toProto(), @@ -67,18 +78,21 @@ export class MsgUndelegate extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/cosmos.staking.v1beta1.MsgUndelegate', value: MsgUndelegate_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgUndelegate { + public static unpackAny(msgAny: Any, _?: boolean): MsgUndelegate { + _; return MsgUndelegate.fromProto(MsgUndelegate_pb.decode(msgAny.value)); } - public static fromData(data: MsgUndelegate.Data): MsgUndelegate { + public static fromData(data: MsgUndelegate.Data, _?: boolean): MsgUndelegate { + _; const { delegator_address, validator_address, amount } = data; return new MsgUndelegate( delegator_address, @@ -87,7 +101,8 @@ export class MsgUndelegate extends JSONSerializable< ); } - public toData(): MsgUndelegate.Data { + public toData(_?: boolean): MsgUndelegate.Data { + _; const { delegator_address, validator_address, amount } = this; return { '@type': '/cosmos.staking.v1beta1.MsgUndelegate', @@ -100,7 +115,7 @@ export class MsgUndelegate extends JSONSerializable< export namespace MsgUndelegate { export interface Amino { - type: 'staking/MsgUndelegate'; + type: 'staking/MsgUndelegate' | 'cosmos-sdk/MsgUndelegate'; value: { delegator_address: AccAddress; validator_address: ValAddress; diff --git a/src/core/treasury/PolicyConstraints.ts b/src/core/treasury/PolicyConstraints.ts index 6b380d950..0cce32a9a 100644 --- a/src/core/treasury/PolicyConstraints.ts +++ b/src/core/treasury/PolicyConstraints.ts @@ -1,7 +1,7 @@ import { JSONSerializable } from '../../util/json'; import { Coin } from '../Coin'; import { Dec, Numeric } from '../numeric'; -import { PolicyConstraints as PolicyConstraints_pb } from '@terra-money/terra.proto/terra/treasury/v1beta1/treasury'; +import { PolicyConstraints as PolicyConstraints_pb } from '@terra-money/legacy.proto/terra/treasury/v1beta1/treasury'; /** * This captures the Treasury module's `tax_policy` and `reward_policy` parameters, which diff --git a/src/core/upgrade/proposals/CancelSoftwareUpgradeProposal.spec.ts b/src/core/upgrade/proposals/CancelSoftwareUpgradeProposal.spec.ts index f4d12a921..541c7df3a 100644 --- a/src/core/upgrade/proposals/CancelSoftwareUpgradeProposal.spec.ts +++ b/src/core/upgrade/proposals/CancelSoftwareUpgradeProposal.spec.ts @@ -1,7 +1,7 @@ import { CancelSoftwareUpgradeProposal } from './CancelSoftwareUpgradeProposal'; describe('CancelSoftwareUpgradeProposal', () => { - it('deserializes', () => { + it('legacy deserializes', () => { const cancelSoftwareUpgradeProposal = CancelSoftwareUpgradeProposal.fromAmino({ type: 'upgrade/CancelSoftwareUpgradeProposal', @@ -16,4 +16,20 @@ describe('CancelSoftwareUpgradeProposal', () => { description: `example description`, }); }); + + it('deserializes', () => { + const cancelSoftwareUpgradeProposal = + CancelSoftwareUpgradeProposal.fromAmino({ + type: 'cosmos-sdk/CancelSoftwareUpgradeProposal', + value: { + title: `upgrade to col-5`, + description: `example description`, + }, + }); + + expect(cancelSoftwareUpgradeProposal).toMatchObject({ + title: `upgrade to col-5`, + description: `example description`, + }); + }); }); diff --git a/src/core/upgrade/proposals/CancelSoftwareUpgradeProposal.ts b/src/core/upgrade/proposals/CancelSoftwareUpgradeProposal.ts index e9f7b9921..ffdb8daa6 100644 --- a/src/core/upgrade/proposals/CancelSoftwareUpgradeProposal.ts +++ b/src/core/upgrade/proposals/CancelSoftwareUpgradeProposal.ts @@ -1,6 +1,6 @@ import { JSONSerializable } from '../../../util/json'; -import { Any } from '@terra-money/terra.proto/google/protobuf/any'; -import { CancelSoftwareUpgradeProposal as CancelSoftwareUpgradeProposal_pb } from '@terra-money/terra.proto/cosmos/upgrade/v1beta1/upgrade'; +import { Any } from '@terra-money/legacy.proto/google/protobuf/any'; +import { CancelSoftwareUpgradeProposal as CancelSoftwareUpgradeProposal_pb } from '@terra-money/legacy.proto/cosmos/upgrade/v1beta1/upgrade'; /** * CancelSoftwareUpgradeProposal is a gov Content type for cancelling a software upgrade @@ -20,18 +20,22 @@ export class CancelSoftwareUpgradeProposal extends JSONSerializable< } public static fromAmino( - data: CancelSoftwareUpgradeProposal.Amino + data: CancelSoftwareUpgradeProposal.Amino, + _?: boolean ): CancelSoftwareUpgradeProposal { + _; const { value: { title, description }, } = data; return new CancelSoftwareUpgradeProposal(title, description); } - public toAmino(): CancelSoftwareUpgradeProposal.Amino { + public toAmino(isClassic?: boolean): CancelSoftwareUpgradeProposal.Amino { const { title, description } = this; return { - type: 'upgrade/CancelSoftwareUpgradeProposal', + type: isClassic + ? 'upgrade/CancelSoftwareUpgradeProposal' + : 'cosmos-sdk/CancelSoftwareUpgradeProposal', value: { title, description, @@ -40,13 +44,16 @@ export class CancelSoftwareUpgradeProposal extends JSONSerializable< } public static fromData( - data: CancelSoftwareUpgradeProposal.Data + data: CancelSoftwareUpgradeProposal.Data, + _?: boolean ): CancelSoftwareUpgradeProposal { + _; const { title, description } = data; return new CancelSoftwareUpgradeProposal(title, description); } - public toData(): CancelSoftwareUpgradeProposal.Data { + public toData(_?: boolean): CancelSoftwareUpgradeProposal.Data { + _; const { title, description } = this; return { '@type': '/cosmos.upgrade.v1beta1.CancelSoftwareUpgradeProposal', @@ -56,12 +63,15 @@ export class CancelSoftwareUpgradeProposal extends JSONSerializable< } public static fromProto( - proto: CancelSoftwareUpgradeProposal.Proto + proto: CancelSoftwareUpgradeProposal.Proto, + _?: boolean ): CancelSoftwareUpgradeProposal { + _; return new CancelSoftwareUpgradeProposal(proto.title, proto.description); } - public toProto(): CancelSoftwareUpgradeProposal.Proto { + public toProto(_?: boolean): CancelSoftwareUpgradeProposal.Proto { + _; const { title, description } = this; return CancelSoftwareUpgradeProposal_pb.fromPartial({ title, @@ -69,14 +79,19 @@ export class CancelSoftwareUpgradeProposal extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/cosmos.upgrade.v1beta1.CancelSoftwareUpgradeProposal', value: CancelSoftwareUpgradeProposal_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): CancelSoftwareUpgradeProposal { + public static unpackAny( + msgAny: Any, + _?: boolean + ): CancelSoftwareUpgradeProposal { + _; return CancelSoftwareUpgradeProposal.fromProto( CancelSoftwareUpgradeProposal_pb.decode(msgAny.value) ); @@ -85,7 +100,9 @@ export class CancelSoftwareUpgradeProposal extends JSONSerializable< export namespace CancelSoftwareUpgradeProposal { export interface Amino { - type: 'upgrade/CancelSoftwareUpgradeProposal'; + type: + | 'upgrade/CancelSoftwareUpgradeProposal' + | 'cosmos-sdk/CancelSoftwareUpgradeProposal'; value: { title: string; description: string; diff --git a/src/core/upgrade/proposals/SoftwareUpgradeProposal.spec.ts b/src/core/upgrade/proposals/SoftwareUpgradeProposal.spec.ts index 3fd63ae6b..7b0da2d6d 100644 --- a/src/core/upgrade/proposals/SoftwareUpgradeProposal.spec.ts +++ b/src/core/upgrade/proposals/SoftwareUpgradeProposal.spec.ts @@ -1,7 +1,7 @@ import { SoftwareUpgradeProposal } from './SoftwareUpgradeProposal'; describe('SoftwareUpgradeProposal', () => { - it('deserializes', () => { + it('legacy deserializes', () => { const softwareUpgradeProposal = SoftwareUpgradeProposal.fromAmino({ type: 'upgrade/SoftwareUpgradeProposal', value: { @@ -29,4 +29,33 @@ describe('SoftwareUpgradeProposal', () => { }, }); }); + + it('deserializes', () => { + const softwareUpgradeProposal = SoftwareUpgradeProposal.fromAmino({ + type: 'cosmos-sdk/SoftwareUpgradeProposal', + value: { + title: `spectest`, + description: `example description`, + plan: { + name: `v0.5.2`, + time: '2019-12-01T03:28:34.024363013Z', + height: '5330001', + info: 'testinfo', + upgraded_client_state: 'deprecated', + }, + }, + }); + + expect(softwareUpgradeProposal).toMatchObject({ + title: `spectest`, + description: `example description`, + plan: { + name: `v0.5.2`, + time: new Date('2019-12-01T03:28:34.024363013Z'), + height: '5330001', + info: 'testinfo', + upgraded_client_state: 'deprecated', + }, + }); + }); }); diff --git a/src/core/upgrade/proposals/SoftwareUpgradeProposal.ts b/src/core/upgrade/proposals/SoftwareUpgradeProposal.ts index b382330fe..676bbb136 100644 --- a/src/core/upgrade/proposals/SoftwareUpgradeProposal.ts +++ b/src/core/upgrade/proposals/SoftwareUpgradeProposal.ts @@ -1,6 +1,6 @@ import { JSONSerializable } from '../../../util/json'; -import { Any } from '@terra-money/terra.proto/google/protobuf/any'; -import { SoftwareUpgradeProposal as SoftwareUpgradeProposal_pb } from '@terra-money/terra.proto/cosmos/upgrade/v1beta1/upgrade'; +import { Any } from '@terra-money/legacy.proto/google/protobuf/any'; +import { SoftwareUpgradeProposal as SoftwareUpgradeProposal_pb } from '@terra-money/legacy.proto/cosmos/upgrade/v1beta1/upgrade'; import { Plan } from '../Plan'; /** @@ -26,8 +26,10 @@ export class SoftwareUpgradeProposal extends JSONSerializable< } public static fromAmino( - data: SoftwareUpgradeProposal.Amino + data: SoftwareUpgradeProposal.Amino, + _?: boolean ): SoftwareUpgradeProposal { + _; const { value: { title, description, plan }, } = data; @@ -38,10 +40,12 @@ export class SoftwareUpgradeProposal extends JSONSerializable< ); } - public toAmino(): SoftwareUpgradeProposal.Amino { + public toAmino(isClassic?: boolean): SoftwareUpgradeProposal.Amino { const { title, description, plan } = this; return { - type: 'upgrade/SoftwareUpgradeProposal', + type: isClassic + ? 'upgrade/SoftwareUpgradeProposal' + : 'cosmos-sdk/SoftwareUpgradeProposal', value: { title, description, @@ -51,8 +55,10 @@ export class SoftwareUpgradeProposal extends JSONSerializable< } public static fromData( - data: SoftwareUpgradeProposal.Data + data: SoftwareUpgradeProposal.Data, + _?: boolean ): SoftwareUpgradeProposal { + _; const { title, description, plan } = data; return new SoftwareUpgradeProposal( title, @@ -61,7 +67,8 @@ export class SoftwareUpgradeProposal extends JSONSerializable< ); } - public toData(): SoftwareUpgradeProposal.Data { + public toData(_?: boolean): SoftwareUpgradeProposal.Data { + _; const { title, description, plan } = this; return { '@type': '/cosmos.upgrade.v1beta1.SoftwareUpgradeProposal', @@ -72,8 +79,10 @@ export class SoftwareUpgradeProposal extends JSONSerializable< } public static fromProto( - proto: SoftwareUpgradeProposal.Proto + proto: SoftwareUpgradeProposal.Proto, + _?: boolean ): SoftwareUpgradeProposal { + _; return new SoftwareUpgradeProposal( proto.title, proto.description, @@ -81,7 +90,8 @@ export class SoftwareUpgradeProposal extends JSONSerializable< ); } - public toProto(): SoftwareUpgradeProposal.Proto { + public toProto(_?: boolean): SoftwareUpgradeProposal.Proto { + _; const { title, description, plan } = this; return SoftwareUpgradeProposal_pb.fromPartial({ title, @@ -90,14 +100,16 @@ export class SoftwareUpgradeProposal extends JSONSerializable< }); } - public packAny(): Any { + public packAny(_?: boolean): Any { + _; return Any.fromPartial({ typeUrl: '/cosmos.upgrade.v1beta1.SoftwareUpgradeProposal', value: SoftwareUpgradeProposal_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): SoftwareUpgradeProposal { + public static unpackAny(msgAny: Any, _?: boolean): SoftwareUpgradeProposal { + _; return SoftwareUpgradeProposal.fromProto( SoftwareUpgradeProposal_pb.decode(msgAny.value) ); @@ -106,7 +118,9 @@ export class SoftwareUpgradeProposal extends JSONSerializable< export namespace SoftwareUpgradeProposal { export interface Amino { - type: 'upgrade/SoftwareUpgradeProposal'; + type: + | 'upgrade/SoftwareUpgradeProposal' + | 'cosmos-sdk/SoftwareUpgradeProposal'; value: { title: string; description: string; diff --git a/src/core/wasm/AbsoluteTxPosition.ts b/src/core/wasm/AbsoluteTxPosition.ts new file mode 100644 index 000000000..bd87cf408 --- /dev/null +++ b/src/core/wasm/AbsoluteTxPosition.ts @@ -0,0 +1,76 @@ +import { + AbsoluteTxPosition as AbsoluteTxPosition_pb, +} from '@terra-money/terra.proto/cosmwasm/wasm/v1/types'; +import { JSONSerializable } from '../../util/json'; +import * as Long from 'long'; +/** + * + */ +export class AbsoluteTxPosition extends JSONSerializable< + AbsoluteTxPosition.Amino, + AbsoluteTxPosition.Data, + AbsoluteTxPosition.Proto +> { + /** + * @param block_height + * @param tx_index + */ + constructor(public block_height: number, public tx_index: number) { + super(); + } + + public static fromAmino(data: AbsoluteTxPosition.Amino): AbsoluteTxPosition { + return new AbsoluteTxPosition(Number.parseInt(data.block_height), Number.parseInt(data.tx_index)); + } + + public toAmino(): AbsoluteTxPosition.Amino { + const res: AbsoluteTxPosition.Amino = { + block_height: this.block_height.toFixed(), + tx_index: this.tx_index.toFixed(), + } + return res; + } + + public static fromData(data: AbsoluteTxPosition.Data): AbsoluteTxPosition { + // FIXME: new core returns human-friendly string like 'Everybody'. + // but accessTypeFromJSON requires "ACCESS_TYPE_EVERYBODY" + // TODO: find out why the strings arent't matching + return new AbsoluteTxPosition(Number.parseInt(data.block_height), Number.parseInt(data.tx_index)); + } + + public toData(): AbsoluteTxPosition.Data { + const res: AbsoluteTxPosition.Data = { + block_height: this.block_height.toFixed(), + tx_index: this.tx_index.toFixed() + } + return res; + } + + public static fromProto(proto: AbsoluteTxPosition.Proto): AbsoluteTxPosition { + return new AbsoluteTxPosition( + proto.blockHeight.toNumber(), + proto.txIndex.toNumber() + ); + } + + public toProto(): AbsoluteTxPosition.Proto { + return AbsoluteTxPosition_pb.fromPartial({ + blockHeight: Long.fromNumber(this.block_height), + txIndex: Long.fromNumber(this.tx_index) + }); + } +} + +export namespace AbsoluteTxPosition { + export interface Amino { + block_height: string; + tx_index: string; + } + + export interface Data { + block_height: string; + tx_index: string; + } + + export type Proto = AbsoluteTxPosition_pb; +} diff --git a/src/core/wasm/AccessConfig.ts b/src/core/wasm/AccessConfig.ts new file mode 100644 index 000000000..b4392bcb8 --- /dev/null +++ b/src/core/wasm/AccessConfig.ts @@ -0,0 +1,79 @@ +import { + AccessType, accessTypeFromJSON, accessTypeToJSON, + AccessConfig as AccessConfig_pb, +} from '@terra-money/terra.proto/cosmwasm/wasm/v1/types'; +import { AccAddress } from 'core/bech32'; +import { JSONSerializable } from '../../util/json'; +export { AccessType }; + +/** + * + */ +export class AccessConfig extends JSONSerializable< + AccessConfig.Amino, + AccessConfig.Data, + AccessConfig.Proto +> { + /** + * @param permission access type + * @param address + */ + constructor(public permission: AccessType, public address: AccAddress) { + super(); + } + + public static fromAmino(data: AccessConfig.Amino): AccessConfig { + return new AccessConfig(accessTypeFromJSON(data.permission), data.address); + } + + public toAmino(): AccessConfig.Amino { + const res: AccessConfig.Amino = { + permission: accessTypeToJSON(this.permission), + address: this.address + } + return res; + } + + public static fromData(data: AccessConfig.Data): AccessConfig { + // FIXME: new core returns human-friendly string like 'Everybody'. + // but accessTypeFromJSON requires "ACCESS_TYPE_EVERYBODY" + // TODO: find out why the strings arent't matching + return new AccessConfig(accessTypeFromJSON(data.permission), data.address); + } + + public toData(): AccessConfig.Data { + const res: AccessConfig.Data = { + permission: accessTypeToJSON(this.permission), + address: this.address + } + return res; + } + + public static fromProto(proto: AccessConfig.Proto): AccessConfig { + return new AccessConfig( + proto.permission, + proto.address + ); + } + + public toProto(): AccessConfig.Proto { + return AccessConfig_pb.fromPartial({ + permission: this.permission, + address: this.address + }); + } +} + +export namespace AccessConfig { + export interface Amino { + permission: string; + address: string; + } + + export interface Data { + permission: string; + address: string; + } + + export type Proto = AccessConfig_pb; +} diff --git a/src/core/wasm/AccessConfigUpdate.ts b/src/core/wasm/AccessConfigUpdate.ts new file mode 100644 index 000000000..46728f992 --- /dev/null +++ b/src/core/wasm/AccessConfigUpdate.ts @@ -0,0 +1,80 @@ +import { + AccessConfigUpdate as AccessConfigUpdate_pb +} from '@terra-money/terra.proto/cosmwasm/wasm/v1/proposal'; +import { JSONSerializable } from '../../util/json'; +import { AccessConfig } from './AccessConfig'; +import * as Long from 'long'; +/** + * + */ +export class AccessConfigUpdate extends JSONSerializable< + AccessConfigUpdate.Amino, + AccessConfigUpdate.Data, + AccessConfigUpdate.Proto +> { + /** + * @param code_id the reference to the stored WASM code to be updated + * @param instantiate_permission to apply to the set of code ids + */ + constructor(public code_id: number, public instantiate_permission?: AccessConfig) { + super(); + } + + public static fromAmino(data: AccessConfigUpdate.Amino): AccessConfigUpdate { + return new AccessConfigUpdate( + Number.parseInt(data.code_id), + data.instantiate_permission ? AccessConfig.fromAmino(data.instantiate_permission) : undefined + ); + } + + public toAmino(): AccessConfigUpdate.Amino { + const res: AccessConfigUpdate.Amino = { + code_id: this.code_id.toFixed(), + instantiate_permission: this.instantiate_permission?.toAmino() + } + return res; + } + + public static fromData(data: AccessConfigUpdate.Data): AccessConfigUpdate { + return new AccessConfigUpdate( + Number.parseInt(data.code_id), + data.instantiate_permission ? AccessConfig.fromData(data.instantiate_permission) : undefined + ); + } + + public toData(): AccessConfigUpdate.Data { + const res: AccessConfigUpdate.Data = { + code_id: this.code_id.toFixed(), + instantiate_permission: this.instantiate_permission?.toData() + } + return res; + } + + public static fromProto(proto: AccessConfigUpdate.Proto): AccessConfigUpdate { + return new AccessConfigUpdate( + proto.codeId.toNumber(), + proto.instantiatePermission ? AccessConfig.fromProto(proto.instantiatePermission) : undefined + ); + } + + public toProto(): AccessConfigUpdate.Proto { + return AccessConfigUpdate_pb.fromPartial({ + codeId: Long.fromNumber(this.code_id), + instantiatePermission: this.instantiate_permission?.toProto() + }); + } +} + +export namespace AccessConfigUpdate { + export interface Amino { + code_id: string; + instantiate_permission?: AccessConfig.Amino; + } + + export interface Data { + code_id: string; + instantiate_permission?: AccessConfig.Data; + } + + export type Proto = AccessConfigUpdate_pb; +} diff --git a/src/core/wasm/AccessTypeParam.ts b/src/core/wasm/AccessTypeParam.ts new file mode 100644 index 000000000..21066ad54 --- /dev/null +++ b/src/core/wasm/AccessTypeParam.ts @@ -0,0 +1,69 @@ +import { + AccessType, accessTypeFromJSON, accessTypeToJSON, + AccessTypeParam as AccessTypeParam_pb, +} from '@terra-money/terra.proto/cosmwasm/wasm/v1/types'; +import { JSONSerializable } from '../../util/json'; + +export { AccessType }; + +/** + * + */ +export class AccessTypeParam extends JSONSerializable< + AccessTypeParam.Amino, + AccessTypeParam.Data, + AccessTypeParam.Proto +> { + /** + * @param value access type + */ + constructor(public value: AccessType) { + super(); + } + + public static fromAmino(data: AccessTypeParam.Amino): AccessTypeParam { + return new AccessTypeParam(accessTypeFromJSON(data.value)); + } + + public toAmino(): AccessTypeParam.Amino { + const res: AccessTypeParam.Amino = { + value: accessTypeToJSON(this.value) + } + return res; + } + + public static fromData(data: AccessTypeParam.Data): AccessTypeParam { + return new AccessTypeParam(accessTypeFromJSON(data.value)); + } + + public toData(): AccessTypeParam.Data { + const res: AccessTypeParam.Data = { + value: accessTypeToJSON(this.value) + } + return res; + } + + public static fromProto(proto: AccessTypeParam.Proto): AccessTypeParam { + return new AccessTypeParam( + proto.value + ); + } + + public toProto(): AccessTypeParam.Proto { + return AccessTypeParam_pb.fromPartial({ + value: this.value + }); + } +} + +export namespace AccessTypeParam { + export interface Amino { + value: string; + } + + export interface Data { + value: string; + } + + export type Proto = AccessTypeParam_pb; +} diff --git a/src/core/wasm/HistoryEntry.ts b/src/core/wasm/HistoryEntry.ts new file mode 100644 index 000000000..cef587baa --- /dev/null +++ b/src/core/wasm/HistoryEntry.ts @@ -0,0 +1,105 @@ +import { + ContractCodeHistoryEntry as HistoryEntry_pb, + ContractCodeHistoryOperationType, contractCodeHistoryOperationTypeFromJSON, contractCodeHistoryOperationTypeToJSON +} from '@terra-money/terra.proto/cosmwasm/wasm/v1/types'; +import { JSONSerializable, removeNull } from '../../util/json'; +import * as Long from 'long'; +import { AbsoluteTxPosition } from './AbsoluteTxPosition'; +/** + * + */ +export class HistoryEntry extends JSONSerializable< + HistoryEntry.Amino, + HistoryEntry.Data, + HistoryEntry.Proto +> { + /** + * @param operation access type + * @param code_id + */ + constructor( + public operation: ContractCodeHistoryOperationType, + public code_id: number, + public updated: AbsoluteTxPosition | undefined, + public msg: object | string + ) { + super(); + } + + public static fromAmino(data: HistoryEntry.Amino): HistoryEntry { + return new HistoryEntry( + contractCodeHistoryOperationTypeFromJSON(data.operation), + Number.parseInt(data.code_id), + data.updated ? AbsoluteTxPosition.fromAmino(data.updated) : undefined, + data.msg + ); + } + + public toAmino(): HistoryEntry.Amino { + const res: HistoryEntry.Amino = { + operation: contractCodeHistoryOperationTypeToJSON(this.operation), + code_id: this.code_id.toFixed(), + updated: this.updated?.toAmino(), + msg: this.msg + } + return res; + } + + public static fromData(data: HistoryEntry.Data): HistoryEntry { + // FIXME: new core returns human-friendly string like 'Everybody'. + // but accessTypeFromJSON requires "ACCESS_TYPE_EVERYBODY" + // TODO: find out why the strings arent't matching + return new HistoryEntry( + contractCodeHistoryOperationTypeFromJSON(data.operation), + Number.parseInt(data.code_id), + data.updated ? AbsoluteTxPosition.fromData(data.updated) : undefined, + data.msg + ); + } + + public toData(): HistoryEntry.Data { + const res: HistoryEntry.Data = { + operation: contractCodeHistoryOperationTypeToJSON(this.operation), + code_id: this.code_id.toFixed(), + updated: this.updated?.toData(), + msg: this.msg + } + return res; + } + + public static fromProto(proto: HistoryEntry.Proto): HistoryEntry { + return new HistoryEntry( + proto.operation, + proto.codeId.toNumber(), + proto.updated ? AbsoluteTxPosition.fromProto(proto.updated) : undefined, + JSON.parse(Buffer.from(proto.msg).toString('utf-8')), + ); + } + + public toProto(): HistoryEntry.Proto { + return HistoryEntry_pb.fromPartial({ + operation: this.operation, + codeId: Long.fromNumber(this.code_id), + updated: this.updated?.toProto(), + msg: Buffer.from(JSON.stringify(removeNull(this.msg)), 'utf-8'), + }); + } +} + +export namespace HistoryEntry { + export interface Amino { + operation: string; + code_id: string; + updated?: AbsoluteTxPosition.Amino; + msg: object | string; + } + + export interface Data { + operation: string; + code_id: string; + updated?: AbsoluteTxPosition.Data; + msg: object | string; + } + + export type Proto = HistoryEntry_pb; +} diff --git a/src/core/wasm/index.ts b/src/core/wasm/index.ts new file mode 100644 index 000000000..7dd70dd65 --- /dev/null +++ b/src/core/wasm/index.ts @@ -0,0 +1,5 @@ +import { AccessTypeParam, AccessType } from './AccessTypeParam'; +import { AccessConfig } from './AccessConfig'; + +export * from './AccessTypeParam'; +export * from './AccessConfig'; diff --git a/src/core/wasm/msgs/MsgClearContractAdmin.ts b/src/core/wasm/msgs/MsgClearContractAdmin.ts index 5d2f7e031..3654b7fa9 100644 --- a/src/core/wasm/msgs/MsgClearContractAdmin.ts +++ b/src/core/wasm/msgs/MsgClearContractAdmin.ts @@ -1,7 +1,8 @@ import { JSONSerializable } from '../../../util/json'; import { AccAddress } from '../../bech32'; import { Any } from '@terra-money/terra.proto/google/protobuf/any'; -import { MsgClearContractAdmin as MsgClearContractAdmin_pb } from '@terra-money/terra.proto/terra/wasm/v1beta1/tx'; +import { MsgClearContractAdmin as MsgClearContractAdmin_legacy_pb } from '@terra-money/legacy.proto/terra/wasm/v1beta1/tx'; +import { MsgClearAdmin as MsgClearAdmin_pb } from '@terra-money/terra.proto/cosmwasm/wasm/v1/tx'; export class MsgClearContractAdmin extends JSONSerializable< MsgClearContractAdmin.Amino, @@ -10,7 +11,6 @@ export class MsgClearContractAdmin extends JSONSerializable< > { /** * @param admin contract admin - * @param new_admin new admin * @param contract contract address */ constructor(public admin: AccAddress, public contract: AccAddress) { @@ -18,69 +18,138 @@ export class MsgClearContractAdmin extends JSONSerializable< } public static fromAmino( - data: MsgClearContractAdmin.Amino + data: MsgClearContractAdmin.Amino, + isClassic?: boolean ): MsgClearContractAdmin { - const { - value: { admin, contract }, - } = data; - return new MsgClearContractAdmin(admin, contract); + if (isClassic) { + const { + value: { admin, contract }, + } = data as MsgClearContractAdmin.AminoV1; + return new MsgClearContractAdmin(admin, contract); + } else { + const { + value: { sender, contract }, + } = data as MsgClearContractAdmin.AminoV2; + return new MsgClearContractAdmin(sender, contract); + } } - public toAmino(): MsgClearContractAdmin.Amino { + // eslint-disable-next-line @typescript-eslint/no-unused-vars + public toAmino(isClassic?: boolean): MsgClearContractAdmin.Amino { const { admin, contract } = this; - return { - type: 'wasm/MsgClearContractAdmin', - value: { - admin, - contract, - }, - }; + if (isClassic) { + return { + type: 'wasm/MsgClearContractAdmin', + value: { + admin, + contract, + }, + }; + } else { + return { + type: 'wasm/MsgClearAdmin', + value: { + sender: admin, + contract, + }, + }; + } } public static fromProto( - data: MsgClearContractAdmin.Proto + data: MsgClearContractAdmin.Proto, + isClassic?: boolean ): MsgClearContractAdmin { - return new MsgClearContractAdmin(data.admin, data.contract); + if (isClassic) { + const { admin, contract } = data as MsgClearContractAdmin.DataV1; + return new MsgClearContractAdmin(admin, contract); + } else { + const { sender, contract } = data as MsgClearContractAdmin.DataV2; + return new MsgClearContractAdmin(sender, contract); + } } - public toProto(): MsgClearContractAdmin.Proto { - return MsgClearContractAdmin_pb.fromPartial({ - admin: this.admin, - contract: this.contract, - }); + public toProto(isClassic?: boolean): MsgClearContractAdmin.Proto { + if (isClassic) { + return MsgClearContractAdmin_legacy_pb.fromPartial({ + admin: this.admin, + contract: this.contract, + }); + } else { + return MsgClearAdmin_pb.fromPartial({ + sender: this.admin, + contract: this.contract, + }); + } } - public packAny(): Any { - return Any.fromPartial({ - typeUrl: '/terra.wasm.v1beta1.MsgClearContractAdmin', - value: MsgClearContractAdmin_pb.encode(this.toProto()).finish(), - }); + public packAny(isClassic?: boolean): Any { + if (isClassic) { + return Any.fromPartial({ + typeUrl: '/terra.wasm.v1beta1.MsgClearContractAdmin', + value: MsgClearContractAdmin_legacy_pb.encode( + this.toProto(isClassic) as MsgClearContractAdmin_legacy_pb + ).finish(), + }); + } else { + return Any.fromPartial({ + typeUrl: '/cosmwasm.wasm.v1.MsgClearAdmin', + value: MsgClearAdmin_pb.encode( + this.toProto(isClassic) as MsgClearAdmin_pb + ).finish(), + }); + } } - public static unpackAny(msgAny: Any): MsgClearContractAdmin { - return MsgClearContractAdmin.fromProto( - MsgClearContractAdmin_pb.decode(msgAny.value) - ); + public static unpackAny( + msgAny: Any, + isClassic?: boolean + ): MsgClearContractAdmin { + if (isClassic) { + return MsgClearContractAdmin.fromProto( + MsgClearContractAdmin_legacy_pb.decode(msgAny.value), + isClassic + ); + } else { + return MsgClearContractAdmin.fromProto( + MsgClearAdmin_pb.decode(msgAny.value), + isClassic + ); + } } public static fromData( - data: MsgClearContractAdmin.Data + data: MsgClearContractAdmin.Data, + isClassic?: boolean ): MsgClearContractAdmin { - const { admin, contract } = data; - return new MsgClearContractAdmin(admin, contract); + if (isClassic) { + const { admin, contract } = data as MsgClearContractAdmin.DataV1; + return new MsgClearContractAdmin(admin, contract); + } else { + const { sender, contract } = data as MsgClearContractAdmin.DataV2; + return new MsgClearContractAdmin(sender, contract); + } } - public toData(): MsgClearContractAdmin.Data { - return { - '@type': '/terra.wasm.v1beta1.MsgClearContractAdmin', - admin: this.admin, - contract: this.contract, - }; + public toData(isClassic?: boolean): MsgClearContractAdmin.Data { + if (isClassic) { + return { + '@type': '/terra.wasm.v1beta1.MsgClearContractAdmin', + admin: this.admin, + contract: this.contract, + }; + } else { + return { + '@type': '/cosmwasm.wasm.v1.MsgClearAdmin', + sender: this.admin, + contract: this.contract, + }; + } } } export namespace MsgClearContractAdmin { - export interface Amino { + export interface AminoV1 { type: 'wasm/MsgClearContractAdmin'; value: { admin: AccAddress; @@ -88,11 +157,26 @@ export namespace MsgClearContractAdmin { }; } - export interface Data { + export interface AminoV2 { + type: 'wasm/MsgClearAdmin'; + value: { + sender: AccAddress; + contract: AccAddress; + }; + } + export interface DataV1 { '@type': '/terra.wasm.v1beta1.MsgClearContractAdmin'; admin: string; contract: string; } - export type Proto = MsgClearContractAdmin_pb; + export interface DataV2 { + '@type': '/cosmwasm.wasm.v1.MsgClearAdmin'; + sender: string; + contract: string; + } + + export type Amino = AminoV1 | AminoV2; + export type Data = DataV1 | DataV2; + export type Proto = MsgClearContractAdmin_legacy_pb | MsgClearAdmin_pb; } diff --git a/src/core/wasm/msgs/MsgExecuteContract.spec.ts b/src/core/wasm/msgs/MsgExecuteContract.spec.ts index 5f74bbac5..8e77c53a2 100644 --- a/src/core/wasm/msgs/MsgExecuteContract.spec.ts +++ b/src/core/wasm/msgs/MsgExecuteContract.spec.ts @@ -1,7 +1,9 @@ import { MsgExecuteContract } from './MsgExecuteContract'; +import { MsgExecuteContract as MsgExecuteContract_legacy_pb } from '@terra-money/legacy.proto/terra/wasm/v1beta1/tx'; +import { MsgExecuteContract as MsgExecuteContract_pb } from '@terra-money/terra.proto/cosmwasm/wasm/v1/tx'; describe('MsgExecuteContract', () => { - it('works when execute_msg is not JSON', () => { + it('legacy: works when execute_msg is not JSON', () => { const msg1 = MsgExecuteContract.fromAmino({ type: 'wasm/MsgExecuteContract', value: { @@ -15,7 +17,31 @@ describe('MsgExecuteContract', () => { }, coins: [], }, + }, true); + + expect(msg1.execute_msg).toMatchObject({ + transfer: { + recipient: 'terra13jqgrtqwucx4jdvhg0d4tc80892fscx54298yt', + amount: 10000, + }, }); + }); + + it('works when execute_msg is not JSON', () => { + const msg1 = MsgExecuteContract.fromAmino({ + type: 'wasm/MsgExecuteContract', + value: { + sender: 'terra16xw94u0jgmuaz8zs54xn9x96lxew74gs05gs4h', + contract: 'terra15gwkyepfc6xgca5t5zefzwy42uts8l2m4g40k6', + msg: { + transfer: { + recipient: 'terra13jqgrtqwucx4jdvhg0d4tc80892fscx54298yt', + amount: 10000, + }, + }, + funds: [], + }, + }, false); expect(msg1.execute_msg).toMatchObject({ transfer: { @@ -25,7 +51,7 @@ describe('MsgExecuteContract', () => { }); }); - it('proto', () => { + it('legacy proto', () => { const msg1 = MsgExecuteContract.fromData({ '@type': '/terra.wasm.v1beta1.MsgExecuteContract', sender: 'terra16xw94u0jgmuaz8zs54xn9x96lxew74gs05gs4h', @@ -37,7 +63,29 @@ describe('MsgExecuteContract', () => { }, }, coins: [], + }, true); + + expect(msg1.execute_msg).toMatchObject({ + transfer: { + recipient: 'terra13jqgrtqwucx4jdvhg0d4tc80892fscx54298yt', + amount: 10000, + }, }); + }); + + it('proto', () => { + const msg1 = MsgExecuteContract.fromData({ + '@type': '/cosmwasm.wasm.v1.MsgExecuteContract', + sender: 'terra16xw94u0jgmuaz8zs54xn9x96lxew74gs05gs4h', + contract: 'terra15gwkyepfc6xgca5t5zefzwy42uts8l2m4g40k6', + msg: { + transfer: { + recipient: 'terra13jqgrtqwucx4jdvhg0d4tc80892fscx54298yt', + amount: 10000, + }, + }, + funds: [], + }, false); expect(msg1.execute_msg).toMatchObject({ transfer: { @@ -47,24 +95,49 @@ describe('MsgExecuteContract', () => { }); }); - it('with string msg', () => { + + + it('legacy: with string msg', () => { const msgWithExecuteString = new MsgExecuteContract( 'terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v', 'terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v', 'execute_msg_as_string', { uluna: 120400 } ); - const aminoWithExecuteString = msgWithExecuteString.toAmino(); + const aminoWithExecuteString = msgWithExecuteString.toAmino(true) as MsgExecuteContract.AminoV1; expect(aminoWithExecuteString.value.execute_msg).toEqual( msgWithExecuteString.execute_msg ); - const protoWithExecuteString = msgWithExecuteString.toProto(); + const protoWithExecuteString = msgWithExecuteString.toProto(true) as MsgExecuteContract_legacy_pb; expect(protoWithExecuteString.executeMsg.toString()).toEqual( JSON.stringify(msgWithExecuteString.execute_msg) ); - const dataWithExecuteString = msgWithExecuteString.toData(); + const dataWithExecuteString = msgWithExecuteString.toData(true) as MsgExecuteContract.DataV1; expect(dataWithExecuteString.execute_msg).toEqual( msgWithExecuteString.execute_msg ); }); + + it('with string msg', () => { + const msgWithExecuteString = new MsgExecuteContract( + 'terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v', + 'terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v', + 'execute_msg_as_string', + { uluna: 120400 } + ); + const aminoWithExecuteString = msgWithExecuteString.toAmino(false) as MsgExecuteContract.AminoV2; + expect(aminoWithExecuteString.value.msg).toEqual( + msgWithExecuteString.execute_msg + ); + const protoWithExecuteString = msgWithExecuteString.toProto(false) as MsgExecuteContract_pb; + expect(protoWithExecuteString.msg.toString()).toEqual( + JSON.stringify(msgWithExecuteString.execute_msg) + ); + const dataWithExecuteString = msgWithExecuteString.toData(false) as MsgExecuteContract.DataV2; + expect(dataWithExecuteString.msg).toEqual( + msgWithExecuteString.execute_msg + ); + }); + + }); diff --git a/src/core/wasm/msgs/MsgExecuteContract.ts b/src/core/wasm/msgs/MsgExecuteContract.ts index 97e12038c..c50b1f9f5 100644 --- a/src/core/wasm/msgs/MsgExecuteContract.ts +++ b/src/core/wasm/msgs/MsgExecuteContract.ts @@ -2,7 +2,8 @@ import { JSONSerializable, removeNull } from '../../../util/json'; import { AccAddress } from '../../bech32'; import { Coins } from '../../Coins'; import { Any } from '@terra-money/terra.proto/google/protobuf/any'; -import { MsgExecuteContract as MsgExecuteContract_pb } from '@terra-money/terra.proto/terra/wasm/v1beta1/tx'; +import { MsgExecuteContract as MsgExecuteContract_legacy_pb } from '@terra-money/legacy.proto/terra/wasm/v1beta1/tx'; +import { MsgExecuteContract as MsgExecuteContract_pb } from '@terra-money/terra.proto/cosmwasm/wasm/v1/tx'; export class MsgExecuteContract extends JSONSerializable< MsgExecuteContract.Amino, @@ -14,7 +15,7 @@ export class MsgExecuteContract extends JSONSerializable< /** * @param sender contract user * @param contract contract address - * @param msg HandleMsg to pass as arguments for contract invocation + * @param execute_msg HandleMsg to pass as arguments for contract invocation * @param coins coins to be sent to contract */ constructor( @@ -27,88 +28,182 @@ export class MsgExecuteContract extends JSONSerializable< this.coins = new Coins(coins); } - public static fromAmino(data: MsgExecuteContract.Amino): MsgExecuteContract { - const { - value: { sender, contract, execute_msg, coins }, - } = data; - return new MsgExecuteContract( - sender, - contract, - execute_msg, - Coins.fromAmino(coins) - ); + public static fromAmino( + data: MsgExecuteContract.Amino, + isClassic?: boolean + ): MsgExecuteContract { + if (isClassic) { + const { + value: { sender, contract, execute_msg, coins }, + } = data as MsgExecuteContract.AminoV1; + return new MsgExecuteContract( + sender, + contract, + execute_msg, + Coins.fromAmino(coins) + ); + } else { + const { + value: { sender, contract, msg, funds }, + } = data as MsgExecuteContract.AminoV2; + return new MsgExecuteContract( + sender, + contract, + msg, + Coins.fromAmino(funds) + ); + } } - public toAmino(): MsgExecuteContract.Amino { + public toAmino(isClassic?: boolean): MsgExecuteContract.Amino { const { sender, contract, execute_msg, coins } = this; - - return { - type: 'wasm/MsgExecuteContract', - value: { - sender, - contract, - execute_msg: removeNull(execute_msg), - coins: coins.toAmino(), - }, - }; + if (isClassic) { + return { + type: 'wasm/MsgExecuteContract', + value: { + sender, + contract, + execute_msg: removeNull(execute_msg), + coins: coins.toAmino(), + }, + }; + } else { + return { + type: 'wasm/MsgExecuteContract', + value: { + sender, + contract, + msg: removeNull(execute_msg), + funds: coins.toAmino(), + }, + }; + } } - public static fromProto(data: MsgExecuteContract.Proto): MsgExecuteContract { - return new MsgExecuteContract( - data.sender, - data.contract, - JSON.parse(Buffer.from(data.executeMsg).toString('utf-8')), - Coins.fromProto(data.coins) - ); + public static fromProto( + proto: MsgExecuteContract.Proto, + isClassic?: boolean + ): MsgExecuteContract { + if (isClassic) { + const p = proto as MsgExecuteContract_legacy_pb; + return new MsgExecuteContract( + p.sender, + p.contract, + JSON.parse(Buffer.from(p.executeMsg).toString('utf-8')), + Coins.fromProto(p.coins) + ); + } else { + const p = proto as MsgExecuteContract_pb; + return new MsgExecuteContract( + p.sender, + p.contract, + JSON.parse(Buffer.from(p.msg).toString('utf-8')), + Coins.fromProto(p.funds) + ); + } } - public toProto(): MsgExecuteContract.Proto { + public toProto(isClassic?: boolean): MsgExecuteContract.Proto { const { sender, contract, execute_msg, coins } = this; - return MsgExecuteContract_pb.fromPartial({ - coins: coins.toProto(), - contract, - sender, - executeMsg: Buffer.from(JSON.stringify(removeNull(execute_msg)), 'utf-8'), - }); + if (isClassic) { + return MsgExecuteContract_legacy_pb.fromPartial({ + coins: coins.toProto(), + contract, + sender, + executeMsg: Buffer.from( + JSON.stringify(removeNull(execute_msg)), + 'utf-8' + ), + }); + } else { + return MsgExecuteContract_pb.fromPartial({ + funds: coins.toProto(), + contract, + sender, + msg: Buffer.from(JSON.stringify(removeNull(execute_msg)), 'utf-8'), + }); + } } - public packAny(): Any { - return Any.fromPartial({ - typeUrl: '/terra.wasm.v1beta1.MsgExecuteContract', - value: MsgExecuteContract_pb.encode(this.toProto()).finish(), - }); + public packAny(isClassic?: boolean): Any { + if (isClassic) { + return Any.fromPartial({ + typeUrl: '/terra.wasm.v1beta1.MsgExecuteContract', + value: MsgExecuteContract_legacy_pb.encode( + this.toProto(isClassic) as MsgExecuteContract_legacy_pb + ).finish(), + }); + } else { + return Any.fromPartial({ + typeUrl: '/cosmwasm.wasm.v1.MsgExecuteContract', + value: MsgExecuteContract_pb.encode( + this.toProto(isClassic) as MsgExecuteContract_pb + ).finish(), + }); + } } - public static unpackAny(msgAny: Any): MsgExecuteContract { + public static unpackAny( + msgAny: Any, + isClassic?: boolean + ): MsgExecuteContract { return MsgExecuteContract.fromProto( - MsgExecuteContract_pb.decode(msgAny.value) + isClassic + ? MsgExecuteContract_legacy_pb.decode(msgAny.value) + : MsgExecuteContract_pb.decode(msgAny.value), + isClassic ); } - public static fromData(data: MsgExecuteContract.Data): MsgExecuteContract { - const { sender, contract, execute_msg, coins } = data; - return new MsgExecuteContract( - sender, - contract, - execute_msg, - Coins.fromData(coins) - ); + public static fromData( + data: MsgExecuteContract.Data, + isClassic?: boolean + ): MsgExecuteContract { + if (isClassic) { + const { sender, contract, execute_msg, coins } = + data as MsgExecuteContract.DataV1; + return new MsgExecuteContract( + sender, + contract, + execute_msg, + Coins.fromData(coins) + ); + } else { + const { sender, contract, msg, funds } = + data as MsgExecuteContract.DataV2; + return new MsgExecuteContract( + sender, + contract, + msg, + Coins.fromData(funds) + ); + } } - public toData(): MsgExecuteContract.Data { + public toData(isClassic?: boolean): MsgExecuteContract.Data { const { sender, contract, execute_msg, coins } = this; - return { - '@type': '/terra.wasm.v1beta1.MsgExecuteContract', - sender, - contract, - execute_msg, - coins: coins.toData(), - }; + if (isClassic) { + return { + '@type': '/terra.wasm.v1beta1.MsgExecuteContract', + sender, + contract, + execute_msg, + coins: coins.toData(), + }; + } else { + return { + '@type': '/cosmwasm.wasm.v1.MsgExecuteContract', + sender, + contract, + msg: execute_msg, + funds: coins.toData(), + }; + } } } export namespace MsgExecuteContract { - export interface Amino { + export interface AminoV1 { type: 'wasm/MsgExecuteContract'; value: { sender: AccAddress; @@ -118,13 +213,32 @@ export namespace MsgExecuteContract { }; } - export interface Data { + export interface AminoV2 { + type: 'wasm/MsgExecuteContract'; + value: { + sender: AccAddress; + contract: AccAddress; + msg: object | string; + funds: Coins.Amino; + }; + } + + export interface DataV1 { '@type': '/terra.wasm.v1beta1.MsgExecuteContract'; sender: AccAddress; contract: AccAddress; execute_msg: object | string; coins: Coins.Data; } + export interface DataV2 { + '@type': '/cosmwasm.wasm.v1.MsgExecuteContract'; + sender: AccAddress; + contract: AccAddress; + msg: object | string; + funds: Coins.Data; + } - export type Proto = MsgExecuteContract_pb; + export type Amino = AminoV1 | AminoV2; + export type Data = DataV1 | DataV2; + export type Proto = MsgExecuteContract_legacy_pb | MsgExecuteContract_pb; } diff --git a/src/core/wasm/msgs/MsgInstantiateContract.spec.ts b/src/core/wasm/msgs/MsgInstantiateContract.spec.ts index 15ff832d6..6f05038cb 100644 --- a/src/core/wasm/msgs/MsgInstantiateContract.spec.ts +++ b/src/core/wasm/msgs/MsgInstantiateContract.spec.ts @@ -1,4 +1,6 @@ import { MsgInstantiateContract } from './MsgInstantiateContract'; +import { MsgInstantiateContract as MsgInstantiateContract_legacy_pb } from '@terra-money/legacy.proto/terra/wasm/v1beta1/tx'; +import { MsgInstantiateContract as MsgInstantiateContract_pb } from '@terra-money/terra.proto/cosmwasm/wasm/v1/tx'; const msgWithAdmin = new MsgInstantiateContract( 'terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v', @@ -25,19 +27,45 @@ const msgWithInitString = new MsgInstantiateContract( ); describe('MsgInstantiateContract', () => { - it('amino', () => { - const aminoWithAdmin = msgWithAdmin.toAmino(); + it('legacy amino', () => { + const aminoWithAdmin = msgWithAdmin.toAmino(true); expect(aminoWithAdmin.value.admin).toEqual(msgWithAdmin.admin); - const aminoWithoutAdmin = msgWithoutAdmin.toAmino(); + const aminoWithoutAdmin = msgWithoutAdmin.toAmino(true); expect(aminoWithoutAdmin.value.admin).toEqual(msgWithoutAdmin.admin); - const aminoWithInitString = msgWithInitString.toAmino(); + const aminoWithInitString = msgWithInitString.toAmino(true) as MsgInstantiateContract.AminoV1; expect(aminoWithInitString.value.init_msg).toEqual( msgWithInitString.init_msg ); }); + it('amino', () => { + const aminoWithAdmin = msgWithAdmin.toAmino(false); + expect(aminoWithAdmin.value.admin).toEqual(msgWithAdmin.admin); + + const aminoWithoutAdmin = msgWithoutAdmin.toAmino(false); + expect(aminoWithoutAdmin.value.admin).toEqual(msgWithoutAdmin.admin); + + const aminoWithInitString = msgWithInitString.toAmino(false) as MsgInstantiateContract.AminoV2; + expect(aminoWithInitString.value.msg).toEqual( + msgWithInitString.init_msg + ); + }); + + it('legacy proto', () => { + const protoWithAdmin = msgWithAdmin.toProto(true); + expect(protoWithAdmin.admin).toEqual(msgWithAdmin.admin); + + const protoWithoutAdmin = msgWithoutAdmin.toProto(true); + expect(protoWithoutAdmin.admin).toEqual(''); + + const protoWithInitString = msgWithInitString.toProto(true) as MsgInstantiateContract_legacy_pb; + expect(protoWithInitString.initMsg.toString()).toEqual( + JSON.stringify(msgWithInitString.init_msg) + ); + }); + it('proto', () => { const protoWithAdmin = msgWithAdmin.toProto(); expect(protoWithAdmin.admin).toEqual(msgWithAdmin.admin); @@ -45,20 +73,32 @@ describe('MsgInstantiateContract', () => { const protoWithoutAdmin = msgWithoutAdmin.toProto(); expect(protoWithoutAdmin.admin).toEqual(''); - const protoWithInitString = msgWithInitString.toProto(); - expect(protoWithInitString.initMsg.toString()).toEqual( + const protoWithInitString = msgWithInitString.toProto() as MsgInstantiateContract_pb; + expect(protoWithInitString.msg.toString()).toEqual( JSON.stringify(msgWithInitString.init_msg) ); }); - it('data', () => { - const dataWithAdmin = msgWithAdmin.toData(); + + it('legacy data', () => { + const dataWithAdmin = msgWithAdmin.toData(true); expect(dataWithAdmin.admin).toEqual(msgWithAdmin.admin); - const dataWithoutAdmin = msgWithoutAdmin.toData(); + const dataWithoutAdmin = msgWithoutAdmin.toData(true); expect(dataWithoutAdmin.admin).toEqual(''); - const dataWithInitString = msgWithInitString.toData(); + const dataWithInitString = msgWithInitString.toData(true) as MsgInstantiateContract.DataV1; expect(dataWithInitString.init_msg).toEqual(msgWithInitString.init_msg); }); + + it('data', () => { + const dataWithAdmin2 = msgWithAdmin.toData(false); + expect(dataWithAdmin2.admin).toEqual(msgWithAdmin.admin); + + const dataWithoutAdmin2 = msgWithoutAdmin.toData(false); + expect(dataWithoutAdmin2.admin).toEqual(''); + + const dataWithInitString2 = msgWithInitString.toData(false) as MsgInstantiateContract.DataV2; + expect(dataWithInitString2.msg).toEqual(msgWithInitString.init_msg); + }); }); diff --git a/src/core/wasm/msgs/MsgInstantiateContract.ts b/src/core/wasm/msgs/MsgInstantiateContract.ts index d9c3104b2..847b47b4f 100644 --- a/src/core/wasm/msgs/MsgInstantiateContract.ts +++ b/src/core/wasm/msgs/MsgInstantiateContract.ts @@ -2,7 +2,8 @@ import { JSONSerializable, removeNull } from '../../../util/json'; import { AccAddress } from '../../bech32'; import { Coins } from '../../Coins'; import { Any } from '@terra-money/terra.proto/google/protobuf/any'; -import { MsgInstantiateContract as MsgInstantiateContract_pb } from '@terra-money/terra.proto/terra/wasm/v1beta1/tx'; +import { MsgInstantiateContract as MsgInstantiateContract_legacy_pb } from '@terra-money/legacy.proto/terra/wasm/v1beta1/tx'; +import { MsgInstantiateContract as MsgInstantiateContract_pb } from '@terra-money/terra.proto/cosmwasm/wasm/v1/tx'; import * as Long from 'long'; export class MsgInstantiateContract extends JSONSerializable< @@ -18,111 +19,217 @@ export class MsgInstantiateContract extends JSONSerializable< * @param code_id is the reference to the stored WASM code * @param init_msg json encoded message to be passed to the contract on instantiation * @param init_coins are transferred to the contract on execution + * @param label label for the contract. v2 supported only */ constructor( public sender: AccAddress, public admin: AccAddress | undefined, public code_id: number, public init_msg: object | string, - init_coins: Coins.Input = {} + init_coins: Coins.Input = {}, + public label?: string ) { super(); this.init_coins = new Coins(init_coins); } public static fromAmino( - data: MsgInstantiateContract.Amino + data: MsgInstantiateContract.Amino, + isClassic?: boolean ): MsgInstantiateContract { - const { - value: { sender, admin, code_id, init_msg, init_coins }, - } = data; - return new MsgInstantiateContract( - sender, - admin, - Number.parseInt(code_id), - init_msg, - Coins.fromAmino(init_coins) - ); - } - - public toAmino(): MsgInstantiateContract.Amino { - const { sender, admin, code_id, init_msg, init_coins } = this; - return { - type: 'wasm/MsgInstantiateContract', - value: { + if (isClassic) { + const { + value: { sender, admin, code_id, init_msg, init_coins }, + } = data as MsgInstantiateContract.AminoV1; + return new MsgInstantiateContract( sender, admin, - code_id: code_id.toFixed(), - init_msg: removeNull(init_msg), - init_coins: init_coins.toAmino(), - }, - }; + Number.parseInt(code_id), + init_msg, + Coins.fromAmino(init_coins) + ); + } + { + const { + value: { sender, admin, code_id, msg, funds, label }, + } = data as MsgInstantiateContract.AminoV2; + return new MsgInstantiateContract( + sender, + admin, + Number.parseInt(code_id), + msg, + Coins.fromAmino(funds), + label + ); + } + } + + public toAmino(isClassic?: boolean): MsgInstantiateContract.Amino { + const { sender, admin, code_id, init_msg, init_coins, label } = this; + if (isClassic) { + return { + type: 'wasm/MsgInstantiateContract', + value: { + sender, + admin, + code_id: code_id.toFixed(), + init_msg: removeNull(init_msg), + init_coins: init_coins.toAmino(), + }, + }; + } else { + return { + type: 'wasm/MsgInstantiateContract', + value: { + sender, + admin, + code_id: code_id.toFixed(), + label, + msg: removeNull(init_msg), + funds: init_coins.toAmino(), + }, + }; + } } public static fromProto( - proto: MsgInstantiateContract.Proto + proto: MsgInstantiateContract.Proto, + isClassic?: boolean ): MsgInstantiateContract { - return new MsgInstantiateContract( - proto.sender, - proto.admin !== '' ? proto.admin : undefined, - proto.codeId.toNumber(), - JSON.parse(Buffer.from(proto.initMsg).toString('utf-8')), - Coins.fromProto(proto.initCoins) - ); + if (isClassic) { + const p = proto as MsgInstantiateContract_legacy_pb; + return new MsgInstantiateContract( + p.sender, + p.admin !== '' ? p.admin : undefined, + p.codeId.toNumber(), + JSON.parse(Buffer.from(p.initMsg).toString('utf-8')), + Coins.fromProto(p.initCoins) + ); + } else { + const p = proto as MsgInstantiateContract_pb; + return new MsgInstantiateContract( + p.sender, + p.admin !== '' ? p.admin : undefined, + p.codeId.toNumber(), + JSON.parse(Buffer.from(p.msg).toString('utf-8')), + Coins.fromProto(p.funds), + p.label !== '' ? p.label : undefined + ); + } } - public toProto(): MsgInstantiateContract.Proto { - const { sender, admin, code_id, init_msg, init_coins } = this; - return MsgInstantiateContract_pb.fromPartial({ - admin, - codeId: Long.fromNumber(code_id), - initCoins: init_coins.toProto(), - initMsg: Buffer.from(JSON.stringify(init_msg), 'utf-8'), - sender, - }); + public toProto(isClassic?: boolean): MsgInstantiateContract.Proto { + const { sender, admin, code_id, init_msg, init_coins, label } = this; + if (isClassic) { + return MsgInstantiateContract_legacy_pb.fromPartial({ + admin, + codeId: Long.fromNumber(code_id), + initCoins: init_coins.toProto(), + initMsg: Buffer.from(JSON.stringify(init_msg), 'utf-8'), + sender, + }); + } else { + return MsgInstantiateContract_pb.fromPartial({ + admin, + codeId: Long.fromNumber(code_id), + funds: init_coins.toProto(), + msg: Buffer.from(JSON.stringify(init_msg), 'utf-8'), + sender, + label, + }); + } } - public packAny(): Any { - return Any.fromPartial({ - typeUrl: '/terra.wasm.v1beta1.MsgInstantiateContract', - value: MsgInstantiateContract_pb.encode(this.toProto()).finish(), - }); + public packAny(isClassic?: boolean): Any { + if (isClassic) { + return Any.fromPartial({ + typeUrl: '/terra.wasm.v1beta1.MsgInstantiateContract', + value: MsgInstantiateContract_legacy_pb.encode( + this.toProto(isClassic) as MsgInstantiateContract_legacy_pb + ).finish(), + }); + } else { + return Any.fromPartial({ + typeUrl: '/cosmwasm.wasm.v1.MsgInstantiateContract', + value: MsgInstantiateContract_pb.encode( + this.toProto(isClassic) as MsgInstantiateContract_pb + ).finish(), + }); + } } - public static unpackAny(msgAny: Any): MsgInstantiateContract { - return MsgInstantiateContract.fromProto( - MsgInstantiateContract_pb.decode(msgAny.value) - ); + public static unpackAny( + msgAny: Any, + isClassic?: boolean + ): MsgInstantiateContract { + if (isClassic) { + return MsgInstantiateContract.fromProto( + MsgInstantiateContract_legacy_pb.decode(msgAny.value), + isClassic + ); + } else { + return MsgInstantiateContract.fromProto( + MsgInstantiateContract_pb.decode(msgAny.value), + isClassic + ); + } } public static fromData( - data: MsgInstantiateContract.Data + data: MsgInstantiateContract.Data, + isClassic?: boolean ): MsgInstantiateContract { - const { sender, admin, code_id, init_msg, init_coins } = data; - return new MsgInstantiateContract( - sender, - admin !== '' ? admin : undefined, - Number.parseInt(code_id), - init_msg, - Coins.fromData(init_coins) - ); + if (isClassic) { + const { sender, admin, code_id, init_msg, init_coins } = + data as MsgInstantiateContract.DataV1; + return new MsgInstantiateContract( + sender, + admin !== '' ? admin : undefined, + Number.parseInt(code_id), + init_msg, + Coins.fromData(init_coins) + ); + } else { + const { sender, admin, code_id, label, msg, funds } = + data as MsgInstantiateContract.DataV2; + return new MsgInstantiateContract( + sender, + admin !== '' ? admin : undefined, + Number.parseInt(code_id), + msg, + Coins.fromData(funds), + label + ); + } } - public toData(): MsgInstantiateContract.Data { - const { sender, admin, code_id, init_msg, init_coins } = this; - return { - '@type': '/terra.wasm.v1beta1.MsgInstantiateContract', - sender, - admin: admin || '', - code_id: code_id.toFixed(), - init_msg: removeNull(init_msg), - init_coins: init_coins.toData(), - }; + public toData(isClassic?: boolean): MsgInstantiateContract.Data { + const { sender, admin, code_id, label, init_msg, init_coins } = this; + if (isClassic) { + return { + '@type': '/terra.wasm.v1beta1.MsgInstantiateContract', + sender, + admin: admin || '', + code_id: code_id.toFixed(), + init_msg: removeNull(init_msg), + init_coins: init_coins.toData(), + }; + } else { + return { + '@type': '/cosmwasm.wasm.v1.MsgInstantiateContract', + sender, + admin: admin || '', + code_id: code_id.toFixed(), + label, + msg: removeNull(init_msg), + funds: init_coins.toData(), + }; + } } } export namespace MsgInstantiateContract { - export interface Amino { + export interface AminoV1 { type: 'wasm/MsgInstantiateContract'; value: { sender: AccAddress; @@ -133,7 +240,19 @@ export namespace MsgInstantiateContract { }; } - export interface Data { + export interface AminoV2 { + type: 'wasm/MsgInstantiateContract'; + value: { + sender: AccAddress; + admin?: AccAddress; + code_id: string; + label?: string; + msg: object | string; + funds: Coins.Amino; + }; + } + + export interface DataV1 { '@type': '/terra.wasm.v1beta1.MsgInstantiateContract'; sender: AccAddress; admin: AccAddress; @@ -142,5 +261,20 @@ export namespace MsgInstantiateContract { init_coins: Coins.Data; } - export type Proto = MsgInstantiateContract_pb; + export interface DataV2 { + '@type': '/cosmwasm.wasm.v1.MsgInstantiateContract'; + sender: AccAddress; + admin: AccAddress; + code_id: string; + label?: string; + msg: object | string; + funds: Coins.Data; + } + + export type Amino = AminoV1 | AminoV2; + export type Data = DataV1 | DataV2; + + export type Proto = + | MsgInstantiateContract_legacy_pb + | MsgInstantiateContract_pb; } diff --git a/src/core/wasm/msgs/MsgMigrateCode.ts b/src/core/wasm/msgs/MsgMigrateCode.ts index cabfadaa4..51517b3e2 100644 --- a/src/core/wasm/msgs/MsgMigrateCode.ts +++ b/src/core/wasm/msgs/MsgMigrateCode.ts @@ -1,7 +1,7 @@ import { JSONSerializable } from '../../../util/json'; import { AccAddress } from '../../bech32'; import { Any } from '@terra-money/terra.proto/google/protobuf/any'; -import { MsgMigrateCode as MsgMigrateCode_pb } from '@terra-money/terra.proto/terra/wasm/v1beta1/tx'; +import { MsgMigrateCode as MsgMigrateCode_legacy_pb } from '@terra-money/legacy.proto/terra/wasm/v1beta1/tx'; import * as Long from 'long'; export class MsgMigrateCode extends JSONSerializable< @@ -22,14 +22,23 @@ export class MsgMigrateCode extends JSONSerializable< super(); } - public static fromAmino(data: MsgMigrateCode.Amino): MsgMigrateCode { + public static fromAmino( + data: MsgMigrateCode.Amino, + isClassic?: boolean + ): MsgMigrateCode { + if (!isClassic) { + throw new Error('Not supported for the network'); + } const { value: { sender, code_id, wasm_byte_code }, } = data; return new MsgMigrateCode(sender, Number.parseInt(code_id), wasm_byte_code); } - public toAmino(): MsgMigrateCode.Amino { + public toAmino(isClassic?: boolean): MsgMigrateCode.Amino { + if (!isClassic) { + throw new Error('Not supported for the network'); + } const { sender, code_id, wasm_byte_code } = this; return { type: 'wasm/MsgMigrateCode', @@ -41,7 +50,13 @@ export class MsgMigrateCode extends JSONSerializable< }; } - public static fromProto(proto: MsgMigrateCode.Proto): MsgMigrateCode { + public static fromProto( + proto: MsgMigrateCode.Proto, + isClassic?: boolean + ): MsgMigrateCode { + if (!isClassic) { + throw new Error('Not supported for the network'); + } return new MsgMigrateCode( proto.sender, proto.codeId.toNumber(), @@ -49,32 +64,52 @@ export class MsgMigrateCode extends JSONSerializable< ); } - public toProto(): MsgMigrateCode.Proto { + public toProto(isClassic?: boolean): MsgMigrateCode.Proto { + if (!isClassic) { + throw new Error('Not supported for the network'); + } const { sender, code_id, wasm_byte_code } = this; - return MsgMigrateCode_pb.fromPartial({ + return MsgMigrateCode_legacy_pb.fromPartial({ codeId: Long.fromNumber(code_id), sender, wasmByteCode: Buffer.from(wasm_byte_code, 'base64'), }); } - public packAny(): Any { + public packAny(isClassic?: boolean): Any { + if (!isClassic) { + throw new Error('Not supported for the network'); + } return Any.fromPartial({ typeUrl: '/terra.wasm.v1beta1.MsgMigrateCode', - value: MsgMigrateCode_pb.encode(this.toProto()).finish(), + value: MsgMigrateCode_legacy_pb.encode(this.toProto()).finish(), }); } - public static unpackAny(msgAny: Any): MsgMigrateCode { - return MsgMigrateCode.fromProto(MsgMigrateCode_pb.decode(msgAny.value)); + public static unpackAny(msgAny: Any, isClassic?: boolean): MsgMigrateCode { + if (!isClassic) { + throw new Error('Not supported for the network'); + } + return MsgMigrateCode.fromProto( + MsgMigrateCode_legacy_pb.decode(msgAny.value) + ); } - public static fromData(data: MsgMigrateCode.Data): MsgMigrateCode { + public static fromData( + data: MsgMigrateCode.Data, + isClassic?: boolean + ): MsgMigrateCode { + if (!isClassic) { + throw new Error('Not supported for the network'); + } const { sender, code_id, wasm_byte_code } = data; return new MsgMigrateCode(sender, Number.parseInt(code_id), wasm_byte_code); } - public toData(): MsgMigrateCode.Data { + public toData(isClassic?: boolean): MsgMigrateCode.Data { + if (!isClassic) { + throw new Error('Not supported for the network'); + } const { sender, code_id, wasm_byte_code } = this; return { '@type': '/terra.wasm.v1beta1.MsgMigrateCode', @@ -102,5 +137,5 @@ export namespace MsgMigrateCode { wasm_byte_code: string; } - export type Proto = MsgMigrateCode_pb; + export type Proto = MsgMigrateCode_legacy_pb; } diff --git a/src/core/wasm/msgs/MsgMigrateContract.spec.ts b/src/core/wasm/msgs/MsgMigrateContract.spec.ts index eb5b32c4c..6a361c183 100644 --- a/src/core/wasm/msgs/MsgMigrateContract.spec.ts +++ b/src/core/wasm/msgs/MsgMigrateContract.spec.ts @@ -1,4 +1,6 @@ import { MsgMigrateContract } from './MsgMigrateContract'; +import { MsgMigrateContract as MsgMigrateContract_legacy_pb } from '@terra-money/legacy.proto/terra/wasm/v1beta1/tx'; +import { MsgMigrateContract as MsgMigrateContract_pb } from '@terra-money/terra.proto/cosmwasm/wasm/v1/tx'; const msgWithAdmin = new MsgMigrateContract( 'terra1x46rqay4d3cssq8gxxvqz8xt6nwlz4td20k38v', @@ -15,33 +17,64 @@ const msgWithMigrateString = new MsgMigrateContract( ); describe('MsgMigrateContract', () => { - it('amino', () => { - const aminoWithAdmin = msgWithAdmin.toAmino(); + it('legacy amino', () => { + const aminoWithAdmin = msgWithAdmin.toAmino(true) as MsgMigrateContract.AminoV1; expect(aminoWithAdmin.value.admin).toEqual(msgWithAdmin.admin); - const aminoWithMigrateString = msgWithMigrateString.toAmino(); + const aminoWithMigrateString = msgWithMigrateString.toAmino(true) as MsgMigrateContract.AminoV1; expect(aminoWithMigrateString.value.migrate_msg).toEqual( msgWithMigrateString.migrate_msg ); }); - it('proto', () => { - const protoWithAdmin = msgWithAdmin.toProto(); + it('legacy proto', () => { + const protoWithAdmin = msgWithAdmin.toProto(true) as MsgMigrateContract_legacy_pb; expect(protoWithAdmin.admin).toEqual(msgWithAdmin.admin); - const protoWithMigrateString = msgWithMigrateString.toProto(); + const protoWithMigrateString = msgWithMigrateString.toProto(true) as MsgMigrateContract_legacy_pb; expect(protoWithMigrateString.migrateMsg.toString()).toEqual( JSON.stringify(msgWithMigrateString.migrate_msg) ); }); - it('data', () => { - const dataWithAdmin = msgWithAdmin.toData(); + it('legacy data', () => { + const dataWithAdmin = msgWithAdmin.toData(true) as MsgMigrateContract.DataV1; expect(dataWithAdmin.admin).toEqual(msgWithAdmin.admin); - const dataWithMigrateString = msgWithMigrateString.toData(); + const dataWithMigrateString = msgWithMigrateString.toData(true) as MsgMigrateContract.DataV1; expect(dataWithMigrateString.migrate_msg).toEqual( msgWithMigrateString.migrate_msg ); }); + + + it('amino', () => { + const aminoWithAdmin = msgWithAdmin.toAmino(false) as MsgMigrateContract.AminoV2; + expect(aminoWithAdmin.value.sender).toEqual(msgWithAdmin.admin); + + const aminoWithMigrateString = msgWithMigrateString.toAmino(false) as MsgMigrateContract.AminoV2; + expect(aminoWithMigrateString.value.msg).toEqual( + msgWithMigrateString.migrate_msg + ); + }); + + it('proto', () => { + const protoWithAdmin = msgWithAdmin.toProto(false) as MsgMigrateContract_pb; + expect(protoWithAdmin.sender).toEqual(msgWithAdmin.admin); + + const protoWithMigrateString = msgWithMigrateString.toProto(false) as MsgMigrateContract_pb; + expect(protoWithMigrateString.msg.toString()).toEqual( + JSON.stringify(msgWithMigrateString.migrate_msg) + ); + }); + + it('data', () => { + const dataWithAdmin = msgWithAdmin.toData(false) as MsgMigrateContract.DataV2; + expect(dataWithAdmin.sender).toEqual(msgWithAdmin.admin); + + const dataWithMigrateString = msgWithMigrateString.toData(false) as MsgMigrateContract.DataV2; + expect(dataWithMigrateString.msg).toEqual( + msgWithMigrateString.migrate_msg + ); + }); }); diff --git a/src/core/wasm/msgs/MsgMigrateContract.ts b/src/core/wasm/msgs/MsgMigrateContract.ts index 83b291d31..6229aa6aa 100644 --- a/src/core/wasm/msgs/MsgMigrateContract.ts +++ b/src/core/wasm/msgs/MsgMigrateContract.ts @@ -1,7 +1,8 @@ import { JSONSerializable, removeNull } from '../../../util/json'; import { AccAddress } from '../../bech32'; import { Any } from '@terra-money/terra.proto/google/protobuf/any'; -import { MsgMigrateContract as MsgMigrateContract_pb } from '@terra-money/terra.proto/terra/wasm/v1beta1/tx'; +import { MsgMigrateContract as MsgMigrateContract_legacy_pb } from '@terra-money/legacy.proto/terra/wasm/v1beta1/tx'; +import { MsgMigrateContract as MsgMigrateContract_pb } from '@terra-money/terra.proto/cosmwasm/wasm/v1/tx'; import * as Long from 'long'; export class MsgMigrateContract extends JSONSerializable< @@ -24,86 +25,179 @@ export class MsgMigrateContract extends JSONSerializable< super(); } - public static fromAmino(data: MsgMigrateContract.Amino): MsgMigrateContract { - const { - value: { admin, contract, new_code_id, migrate_msg }, - } = data; - return new MsgMigrateContract( - admin, - contract, - Number.parseInt(new_code_id), - migrate_msg - ); - } - - public toAmino(): MsgMigrateContract.Amino { - const { admin, contract, new_code_id, migrate_msg } = this; - return { - type: 'wasm/MsgMigrateContract', - value: { + public static fromAmino( + data: MsgMigrateContract.Amino, + isClassic?: boolean + ): MsgMigrateContract { + if (isClassic) { + const { + value: { admin, contract, new_code_id, migrate_msg }, + } = data as MsgMigrateContract.AminoV1; + return new MsgMigrateContract( admin, contract, - new_code_id: new_code_id.toFixed(), - migrate_msg: removeNull(migrate_msg), - }, - }; + Number.parseInt(new_code_id), + migrate_msg + ); + } else { + const { + value: { sender, contract, code_id, msg }, + } = data as MsgMigrateContract.AminoV2; + return new MsgMigrateContract( + sender, + contract, + Number.parseInt(code_id), + msg + ); + } } - public static fromProto(proto: MsgMigrateContract.Proto): MsgMigrateContract { - return new MsgMigrateContract( - proto.admin, - proto.contract, - proto.newCodeId.toNumber(), - JSON.parse(Buffer.from(proto.migrateMsg).toString('utf-8')) - ); + public toAmino(isClassic?: boolean): MsgMigrateContract.Amino { + if (isClassic) { + const { admin, contract, new_code_id, migrate_msg } = this; + return { + type: 'wasm/MsgMigrateContract', + value: { + admin, + contract, + new_code_id: new_code_id.toFixed(), + migrate_msg: removeNull(migrate_msg), + }, + }; + } else { + const { admin, contract, new_code_id, migrate_msg } = this; + return { + type: 'wasm/MsgMigrateContract', + value: { + sender: admin, + contract, + code_id: new_code_id.toFixed(), + msg: removeNull(migrate_msg), + }, + }; + } + } + + public static fromProto( + proto: MsgMigrateContract.Proto, + isClassic?: boolean + ): MsgMigrateContract { + if (isClassic) { + const p = proto as MsgMigrateContract_legacy_pb; + return new MsgMigrateContract( + p.admin, + p.contract, + p.newCodeId.toNumber(), + JSON.parse(Buffer.from(p.migrateMsg).toString('utf-8')) + ); + } else { + const p = proto as MsgMigrateContract_pb; + return new MsgMigrateContract( + p.sender, + p.contract, + p.codeId.toNumber(), + JSON.parse(Buffer.from(p.msg).toString('utf-8')) + ); + } } - public toProto(): MsgMigrateContract.Proto { + public toProto(isClassic?: boolean): MsgMigrateContract.Proto { const { admin, contract, new_code_id, migrate_msg } = this; - return MsgMigrateContract_pb.fromPartial({ - admin, - contract, - newCodeId: Long.fromNumber(new_code_id), - migrateMsg: Buffer.from(JSON.stringify(migrate_msg), 'utf-8'), - }); + if (isClassic) { + return MsgMigrateContract_legacy_pb.fromPartial({ + admin, + contract, + newCodeId: Long.fromNumber(new_code_id), + migrateMsg: Buffer.from(JSON.stringify(migrate_msg), 'utf-8'), + }); + } else { + return MsgMigrateContract_pb.fromPartial({ + sender: admin, + contract, + codeId: Long.fromNumber(new_code_id), + msg: Buffer.from(JSON.stringify(migrate_msg), 'utf-8'), + }); + } } - public packAny(): Any { - return Any.fromPartial({ - typeUrl: '/terra.wasm.v1beta1.MsgMigrateContract', - value: MsgMigrateContract_pb.encode(this.toProto()).finish(), - }); + public packAny(isClassic?: boolean): Any { + if (isClassic) { + return Any.fromPartial({ + typeUrl: '/terra.wasm.v1beta1.MsgMigrateContract', + value: MsgMigrateContract_legacy_pb.encode( + this.toProto(isClassic) as MsgMigrateContract_legacy_pb + ).finish(), + }); + } else { + return Any.fromPartial({ + typeUrl: '/cosmwasm.wasm.v1.MsgMigrateContract', + value: MsgMigrateContract_pb.encode( + this.toProto(isClassic) as MsgMigrateContract_pb + ).finish(), + }); + } } - public static unpackAny(msgAny: Any): MsgMigrateContract { + public static unpackAny( + msgAny: Any, + isClassic?: boolean + ): MsgMigrateContract { return MsgMigrateContract.fromProto( - MsgMigrateContract_pb.decode(msgAny.value) + isClassic + ? MsgMigrateContract_legacy_pb.decode(msgAny.value) + : MsgMigrateContract_pb.decode(msgAny.value), + isClassic ); } - public static fromData(data: MsgMigrateContract.Data): MsgMigrateContract { - const { admin, contract, new_code_id, migrate_msg } = data; - return new MsgMigrateContract( - admin, - contract, - Number.parseInt(new_code_id), - migrate_msg - ); + public static fromData( + data: MsgMigrateContract.Data, + isClassic?: boolean + ): MsgMigrateContract { + if (isClassic) { + const { admin, contract, new_code_id, migrate_msg } = + data as MsgMigrateContract.DataV1; + return new MsgMigrateContract( + admin, + contract, + Number.parseInt(new_code_id), + migrate_msg + ); + } else { + const { sender, contract, code_id, msg } = + data as MsgMigrateContract.DataV2; + return new MsgMigrateContract( + sender, + contract, + Number.parseInt(code_id), + msg + ); + } } - public toData(): MsgMigrateContract.Data { + public toData(isClassic?: boolean): MsgMigrateContract.Data { const { admin, contract, new_code_id, migrate_msg } = this; - return { - '@type': '/terra.wasm.v1beta1.MsgMigrateContract', - admin, - contract, - new_code_id: new_code_id.toFixed(), - migrate_msg: removeNull(migrate_msg), - }; + if (isClassic) { + return { + '@type': '/terra.wasm.v1beta1.MsgMigrateContract', + admin, + contract, + new_code_id: new_code_id.toFixed(), + migrate_msg: removeNull(migrate_msg), + }; + } else { + return { + '@type': '/cosmwasm.wasm.v1.MsgMigrateContract', + sender: admin, + contract, + code_id: new_code_id.toFixed(), + msg: removeNull(migrate_msg), + }; + } } } export namespace MsgMigrateContract { - export interface Amino { + export interface AminoV1 { type: 'wasm/MsgMigrateContract'; value: { admin: AccAddress; @@ -112,8 +206,17 @@ export namespace MsgMigrateContract { migrate_msg: object | string; }; } + export interface AminoV2 { + type: 'wasm/MsgMigrateContract'; + value: { + sender: AccAddress; + contract: AccAddress; + code_id: string; + msg: object | string; + }; + } - export interface Data { + export interface DataV1 { '@type': '/terra.wasm.v1beta1.MsgMigrateContract'; admin: AccAddress; contract: AccAddress; @@ -121,5 +224,15 @@ export namespace MsgMigrateContract { migrate_msg: object | string; } - export type Proto = MsgMigrateContract_pb; + export interface DataV2 { + '@type': '/cosmwasm.wasm.v1.MsgMigrateContract'; + sender: AccAddress; + contract: AccAddress; + code_id: string; + msg: object | string; + } + + export type Amino = AminoV1 | AminoV2; + export type Data = DataV1 | DataV2; + export type Proto = MsgMigrateContract_legacy_pb | MsgMigrateContract_pb; } diff --git a/src/core/wasm/msgs/MsgStoreCode.ts b/src/core/wasm/msgs/MsgStoreCode.ts index fe5685d52..e16f9c92b 100644 --- a/src/core/wasm/msgs/MsgStoreCode.ts +++ b/src/core/wasm/msgs/MsgStoreCode.ts @@ -1,7 +1,9 @@ import { JSONSerializable } from '../../../util/json'; import { AccAddress } from '../../bech32'; import { Any } from '@terra-money/terra.proto/google/protobuf/any'; -import { MsgStoreCode as MsgStoreCode_pb } from '@terra-money/terra.proto/terra/wasm/v1beta1/tx'; +import { MsgStoreCode as MsgStoreCode_legacy_pb } from '@terra-money/legacy.proto/terra/wasm/v1beta1/tx'; +import { MsgStoreCode as MsgStoreCode_pb } from '@terra-money/terra.proto/cosmwasm/wasm/v1/tx'; +import { AccessConfig } from '../AccessConfig'; export class MsgStoreCode extends JSONSerializable< MsgStoreCode.Amino, @@ -11,72 +13,169 @@ export class MsgStoreCode extends JSONSerializable< /** * @param sender code creator * @param wasm_byte_code base64-encoded bytecode contents + * @param instantiate_permission InstantiatePermission access control to apply on contract creation, optional. v2 supported only */ - constructor(public sender: AccAddress, public wasm_byte_code: string) { + constructor( + public sender: AccAddress, + public wasm_byte_code: string, + public instantiate_permission?: AccessConfig + ) { super(); } - public static fromAmino(data: MsgStoreCode.Amino): MsgStoreCode { - const { - value: { sender, wasm_byte_code }, - } = data; - return new MsgStoreCode(sender, wasm_byte_code); - } - - public toAmino(): MsgStoreCode.Amino { - const { sender, wasm_byte_code } = this; - return { - type: 'wasm/MsgStoreCode', - value: { + public static fromAmino( + data: MsgStoreCode.AminoV2 | MsgStoreCode.AminoV1, + isClassic?: boolean + ): MsgStoreCode { + if (isClassic) { + const { + value: { sender, wasm_byte_code }, + } = data as MsgStoreCode.AminoV1; + return new MsgStoreCode(sender, wasm_byte_code); + } else { + const { + value: { sender, wasm_byte_code, instantiate_permission }, + } = data as MsgStoreCode.AminoV2; + return new MsgStoreCode( sender, wasm_byte_code, - }, - }; + instantiate_permission + ? AccessConfig.fromAmino(instantiate_permission) + : undefined + ); + } } - public static fromProto(proto: MsgStoreCode.Proto): MsgStoreCode { - return new MsgStoreCode( - proto.sender, - Buffer.from(proto.wasmByteCode).toString('base64') - ); + public toAmino(isClassic?: boolean): MsgStoreCode.AminoV2 { + const { sender, wasm_byte_code, instantiate_permission } = this; + if (isClassic) { + return { + type: 'wasm/MsgStoreCode', + value: { + sender, + wasm_byte_code, + }, + }; + } else { + return { + type: 'wasm/MsgStoreCode', + value: { + sender, + wasm_byte_code, + instantiate_permission: instantiate_permission?.toAmino(), + }, + }; + } } - public toProto(): MsgStoreCode.Proto { - const { sender, wasm_byte_code } = this; - return MsgStoreCode_pb.fromPartial({ - sender, - wasmByteCode: Buffer.from(wasm_byte_code, 'base64'), - }); + public static fromProto( + proto: MsgStoreCode.Proto, + isClassic?: boolean + ): MsgStoreCode { + if (isClassic) { + return new MsgStoreCode( + proto.sender, + Buffer.from(proto.wasmByteCode).toString('base64') + ); + } else { + const p = proto as MsgStoreCode_pb; + return new MsgStoreCode( + p.sender, + Buffer.from(p.wasmByteCode).toString('base64'), + p.instantiatePermission + ? AccessConfig.fromProto(p.instantiatePermission) + : undefined + ); + } } - public packAny(): Any { - return Any.fromPartial({ - typeUrl: '/terra.wasm.v1beta1.MsgStoreCode', - value: MsgStoreCode_pb.encode(this.toProto()).finish(), + public toProto(isClassic?: boolean): MsgStoreCode.Proto { + const { sender, wasm_byte_code, instantiate_permission } = this; + if (isClassic) { + return MsgStoreCode_legacy_pb.fromPartial({ + sender, + wasmByteCode: Buffer.from(wasm_byte_code, 'base64'), + }); + } else { + return MsgStoreCode_pb.fromPartial({ + sender, + wasmByteCode: Buffer.from(wasm_byte_code, 'base64'), + instantiatePermission: instantiate_permission?.toProto(), + }); + } + } + + public packAny(isClassic?: boolean): Any { + let typeUrl: string; + if (isClassic) { + typeUrl = '/terra.wasm.v1beta1.MsgStoreCode'; + } else { + typeUrl = '/cosmwasm.wasm.v1.MsgStoreCode'; + } + const any = Any.fromPartial({ + typeUrl, + value: isClassic + ? MsgStoreCode_legacy_pb.encode(this.toProto(isClassic)).finish() + : MsgStoreCode_pb.encode(this.toProto(isClassic)).finish(), }); + return any; } - public static unpackAny(msgAny: Any): MsgStoreCode { - return MsgStoreCode.fromProto(MsgStoreCode_pb.decode(msgAny.value)); + public static unpackAny(msgAny: Any, isClassic?: boolean): MsgStoreCode { + if (isClassic) { + return MsgStoreCode.fromProto( + MsgStoreCode_legacy_pb.decode(msgAny.value), + isClassic + ); + } else { + return MsgStoreCode.fromProto( + MsgStoreCode_pb.decode(msgAny.value), + isClassic + ); + } } - public static fromData(data: MsgStoreCode.Data): MsgStoreCode { - const { sender, wasm_byte_code } = data; - return new MsgStoreCode(sender, wasm_byte_code); + public static fromData( + data: MsgStoreCode.DataV2 | MsgStoreCode.DataV1, + isClassic?: boolean + ): MsgStoreCode { + if (isClassic) { + const { sender, wasm_byte_code } = data as MsgStoreCode.DataV1; + return new MsgStoreCode(sender, wasm_byte_code); + } else { + const { sender, wasm_byte_code, instantiate_permission } = + data as MsgStoreCode.DataV2; + return new MsgStoreCode( + sender, + wasm_byte_code, + instantiate_permission + ? AccessConfig.fromData(instantiate_permission) + : undefined + ); + } } - public toData(): MsgStoreCode.Data { - const { sender, wasm_byte_code } = this; - return { - '@type': '/terra.wasm.v1beta1.MsgStoreCode', - sender, - wasm_byte_code, - }; + public toData(isClassic?: boolean): MsgStoreCode.Data { + const { sender, wasm_byte_code, instantiate_permission } = this; + if (isClassic) { + return { + '@type': '/terra.wasm.v1beta1.MsgStoreCode', + sender, + wasm_byte_code, + }; + } else { + return { + '@type': '/cosmwasm.wasm.v1.MsgStoreCode', + sender, + wasm_byte_code, + instantiate_permission: instantiate_permission?.toData(), + }; + } } } export namespace MsgStoreCode { - export interface Amino { + export interface AminoV1 { type: 'wasm/MsgStoreCode'; value: { sender: AccAddress; @@ -84,11 +183,29 @@ export namespace MsgStoreCode { }; } - export interface Data { + export interface AminoV2 { + type: 'wasm/MsgStoreCode'; + value: { + sender: AccAddress; + wasm_byte_code: string; + instantiate_permission?: AccessConfig.Amino; + }; + } + export type Amino = AminoV1 | AminoV2; + + export interface DataV1 { '@type': '/terra.wasm.v1beta1.MsgStoreCode'; sender: AccAddress; wasm_byte_code: string; } - export type Proto = MsgStoreCode_pb; + export interface DataV2 { + '@type': '/cosmwasm.wasm.v1.MsgStoreCode'; + sender: AccAddress; + wasm_byte_code: string; + instantiate_permission?: AccessConfig.Data; + } + export type Data = DataV1 | DataV2; + + export type Proto = MsgStoreCode_legacy_pb | MsgStoreCode_pb; } diff --git a/src/core/wasm/msgs/MsgUpdateContractAdmin.ts b/src/core/wasm/msgs/MsgUpdateContractAdmin.ts index 43347b5e8..d6e9c5e54 100644 --- a/src/core/wasm/msgs/MsgUpdateContractAdmin.ts +++ b/src/core/wasm/msgs/MsgUpdateContractAdmin.ts @@ -1,7 +1,8 @@ import { JSONSerializable } from '../../../util/json'; import { AccAddress } from '../../bech32'; import { Any } from '@terra-money/terra.proto/google/protobuf/any'; -import { MsgUpdateContractAdmin as MsgUpdateContractAdmin_pb } from '@terra-money/terra.proto/terra/wasm/v1beta1/tx'; +import { MsgUpdateContractAdmin as MsgUpdateContractAdmin_legacy_pb } from '@terra-money/legacy.proto/terra/wasm/v1beta1/tx'; +import { MsgUpdateAdmin as MsgUpdateAdmin_pb } from '@terra-money/terra.proto/cosmwasm/wasm/v1/tx'; export class MsgUpdateContractAdmin extends JSONSerializable< MsgUpdateContractAdmin.Amino, @@ -22,78 +23,147 @@ export class MsgUpdateContractAdmin extends JSONSerializable< } public static fromAmino( - data: MsgUpdateContractAdmin.Amino + data: MsgUpdateContractAdmin.Amino, + isClassic?: boolean ): MsgUpdateContractAdmin { - const { - value: { admin, new_admin, contract }, - } = data; - return new MsgUpdateContractAdmin(admin, new_admin, contract); + if (isClassic) { + const { + value: { admin, new_admin, contract }, + } = data as MsgUpdateContractAdmin.AminoV1; + return new MsgUpdateContractAdmin(admin, new_admin, contract); + } else { + const { + value: { sender, new_admin, contract }, + } = data as MsgUpdateContractAdmin.AminoV2; + return new MsgUpdateContractAdmin(sender, new_admin, contract); + } } - public toAmino(): MsgUpdateContractAdmin.Amino { + public toAmino(isClassic?: boolean): MsgUpdateContractAdmin.Amino { const { admin, new_admin, contract } = this; - return { - type: 'wasm/MsgUpdateContractAdmin', - value: { - admin, - new_admin, - contract, - }, - }; + if (isClassic) { + return { + type: 'wasm/MsgUpdateContractAdmin', + value: { + admin, + new_admin, + contract, + }, + }; + } else { + return { + type: 'wasm/MsgUpdateAdmin', + value: { + sender: admin, + new_admin, + contract, + }, + }; + } } public static fromProto( - proto: MsgUpdateContractAdmin.Proto + proto: MsgUpdateContractAdmin.Proto, + isClassic?: boolean ): MsgUpdateContractAdmin { - return new MsgUpdateContractAdmin( - proto.admin, - proto.newAdmin, - proto.contract - ); + if (isClassic) { + const p = proto as MsgUpdateContractAdmin_legacy_pb; + return new MsgUpdateContractAdmin(p.admin, p.newAdmin, p.contract); + } else { + const p = proto as MsgUpdateAdmin_pb; + return new MsgUpdateContractAdmin(p.sender, p.newAdmin, p.contract); + } } - public toProto(): MsgUpdateContractAdmin.Proto { + public toProto(isClassic?: boolean): MsgUpdateContractAdmin.Proto { const { admin, new_admin, contract } = this; - return MsgUpdateContractAdmin_pb.fromPartial({ - admin, - contract, - newAdmin: new_admin, - }); + if (isClassic) { + return MsgUpdateContractAdmin_legacy_pb.fromPartial({ + admin, + contract, + newAdmin: new_admin, + }); + } else { + return MsgUpdateAdmin_pb.fromPartial({ + sender: admin, + contract, + newAdmin: new_admin, + }); + } } - public packAny(): Any { - return Any.fromPartial({ - typeUrl: '/terra.wasm.v1beta1.MsgUpdateContractAdmin', - value: MsgUpdateContractAdmin_pb.encode(this.toProto()).finish(), - }); + public packAny(isClassic?: boolean): Any { + if (isClassic) { + return Any.fromPartial({ + typeUrl: '/terra.wasm.v1beta1.MsgUpdateContractAdmin', + value: MsgUpdateContractAdmin_legacy_pb.encode( + this.toProto(isClassic) as MsgUpdateContractAdmin_legacy_pb + ).finish(), + }); + } else { + return Any.fromPartial({ + typeUrl: '/coswasm.wasm.v1.MsgUpdateAdmin', + value: MsgUpdateAdmin_pb.encode( + this.toProto(isClassic) as MsgUpdateAdmin_pb + ).finish(), + }); + } } - public static unpackAny(msgAny: Any): MsgUpdateContractAdmin { - return MsgUpdateContractAdmin.fromProto( - MsgUpdateContractAdmin_pb.decode(msgAny.value) - ); + public static unpackAny( + msgAny: Any, + isClassic?: boolean + ): MsgUpdateContractAdmin { + if (isClassic) { + return MsgUpdateContractAdmin.fromProto( + MsgUpdateContractAdmin_legacy_pb.decode(msgAny.value), + isClassic + ); + } else { + return MsgUpdateContractAdmin.fromProto( + MsgUpdateAdmin_pb.decode(msgAny.value), + isClassic + ); + } } public static fromData( - data: MsgUpdateContractAdmin.Data + data: MsgUpdateContractAdmin.Data, + isClassic?: boolean ): MsgUpdateContractAdmin { - const { admin, new_admin, contract } = data; - return new MsgUpdateContractAdmin(admin, new_admin, contract); + if (isClassic) { + const { admin, new_admin, contract } = + data as MsgUpdateContractAdmin.DataV1; + return new MsgUpdateContractAdmin(admin, new_admin, contract); + } else { + const { sender, new_admin, contract } = + data as MsgUpdateContractAdmin.DataV2; + return new MsgUpdateContractAdmin(sender, new_admin, contract); + } } - public toData(): MsgUpdateContractAdmin.Data { + public toData(isClassic?: boolean): MsgUpdateContractAdmin.Data { const { admin, new_admin, contract } = this; - return { - '@type': '/terra.wasm.v1beta1.MsgUpdateContractAdmin', - admin, - new_admin, - contract, - }; + if (isClassic) { + return { + '@type': '/terra.wasm.v1beta1.MsgUpdateContractAdmin', + admin, + new_admin, + contract, + }; + } else { + return { + '@type': '/cosmwasm.wasm.v1.MsgUpdateAdmin', + sender: admin, + new_admin, + contract, + }; + } } } export namespace MsgUpdateContractAdmin { - export interface Amino { + export interface AminoV1 { type: 'wasm/MsgUpdateContractAdmin'; value: { admin: AccAddress; @@ -102,12 +172,30 @@ export namespace MsgUpdateContractAdmin { }; } - export interface Data { + export interface AminoV2 { + type: 'wasm/MsgUpdateAdmin'; + value: { + sender: AccAddress; + new_admin: AccAddress; + contract: AccAddress; + }; + } + + export interface DataV1 { '@type': '/terra.wasm.v1beta1.MsgUpdateContractAdmin'; admin: AccAddress; new_admin: AccAddress; contract: AccAddress; } - export type Proto = MsgUpdateContractAdmin_pb; + export interface DataV2 { + '@type': '/cosmwasm.wasm.v1.MsgUpdateAdmin'; + sender: AccAddress; + new_admin: AccAddress; + contract: AccAddress; + } + + export type Amino = AminoV1 | AminoV2; + export type Data = DataV1 | DataV2; + export type Proto = MsgUpdateContractAdmin_legacy_pb | MsgUpdateAdmin_pb; } diff --git a/src/core/wasm/proposals/ClearAdminProposal.ts b/src/core/wasm/proposals/ClearAdminProposal.ts new file mode 100644 index 000000000..d3bf09b42 --- /dev/null +++ b/src/core/wasm/proposals/ClearAdminProposal.ts @@ -0,0 +1,147 @@ +import { JSONSerializable } from '../../../util/json'; +import { AccAddress } from '../../bech32'; +import { Any } from '@terra-money/terra.proto/google/protobuf/any'; +import { ClearAdminProposal as ClearAdminProposal_pb } from '@terra-money/terra.proto/cosmwasm/wasm/v1/proposal'; + +/** + * ClearAdminProposal gov proposal content type to clear the admin of a + * contract. + */ +export class ClearAdminProposal extends JSONSerializable< + ClearAdminProposal.Amino, + ClearAdminProposal.Data, + ClearAdminProposal.Proto +> { + /** + * @param title a short summary + * @param description a human readable text + * @param contract the address of the smart contract + */ + constructor( + public title: string, + public description: string, + public contract: AccAddress + ) { + super(); + } + + public static fromAmino( + data: ClearAdminProposal.Amino, + isClassic?: boolean + ): ClearAdminProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { + value: { title, description, contract }, + } = data as ClearAdminProposal.Amino; + return new ClearAdminProposal(title, description, contract); + } + + public toAmino(isClassic?: boolean): ClearAdminProposal.Amino { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, contract } = this; + return { + type: 'wasm/ClearAdminProposal', + value: { + title, + description, + contract, + }, + }; + } + + public static fromProto( + proto: ClearAdminProposal.Proto, + isClassic?: boolean + ): ClearAdminProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return new ClearAdminProposal( + proto.title, + proto.description, + proto.contract + ); + } + + public toProto(isClassic?: boolean): ClearAdminProposal.Proto { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, contract } = this; + return ClearAdminProposal_pb.fromPartial({ + title, + description, + contract, + }); + } + public packAny(isClassic?: boolean): Any { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return Any.fromPartial({ + typeUrl: '/cosmwasm.wasm.v1.ClearAdminProposal', + value: ClearAdminProposal_pb.encode(this.toProto(isClassic)).finish(), + }); + } + + public static unpackAny( + msgAny: Any, + isClassic?: boolean + ): ClearAdminProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return ClearAdminProposal.fromProto( + ClearAdminProposal_pb.decode(msgAny.value), + isClassic + ); + } + + public static fromData( + data: ClearAdminProposal.Data, + isClassic?: boolean + ): ClearAdminProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, contract } = data as ClearAdminProposal.Data; + return new ClearAdminProposal(title, description, contract); + } + + public toData(isClassic?: boolean): ClearAdminProposal.Data { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, contract } = this; + return { + '@type': '/cosmwasm.wasm.v1.ClearAdminProposal', + title, + description, + contract, + }; + } +} + +export namespace ClearAdminProposal { + export interface Amino { + type: 'wasm/ClearAdminProposal'; + value: { + title: string; + description: string; + contract: AccAddress; + }; + } + + export interface Data { + '@type': '/cosmwasm.wasm.v1.ClearAdminProposal'; + title: string; + description: string; + contract: AccAddress; + } + + export type Proto = ClearAdminProposal_pb; +} diff --git a/src/core/wasm/proposals/ExecuteContractProposal.ts b/src/core/wasm/proposals/ExecuteContractProposal.ts new file mode 100644 index 000000000..fb311ae25 --- /dev/null +++ b/src/core/wasm/proposals/ExecuteContractProposal.ts @@ -0,0 +1,193 @@ +import { JSONSerializable, removeNull } from '../../../util/json'; +import { AccAddress } from '../../bech32'; +import { Coins } from '../../Coins'; +import { Any } from '@terra-money/terra.proto/google/protobuf/any'; +import { ExecuteContractProposal as ExecuteContractProposal_pb } from '@terra-money/terra.proto/cosmwasm/wasm/v1/proposal'; + +/** + * ExecuteContractProposal gov proposal content type to call execute on a + * contract. + */ +export class ExecuteContractProposal extends JSONSerializable< + ExecuteContractProposal.Amino, + ExecuteContractProposal.Data, + ExecuteContractProposal.Proto +> { + public coins: Coins; + + /** + * @param title a short summary + * @param description a human readable text + * @param run_as contract user + * @param contract contract address + * @param execute_msg HandleMsg to pass as arguments for contract invocation + * @param coins coins to be sent to contract + */ + constructor( + public title: string, + public description: string, + public run_as: AccAddress, + public contract: AccAddress, + public execute_msg: object | string, + coins: Coins.Input = {} + ) { + super(); + this.coins = new Coins(coins); + } + + public static fromAmino( + data: ExecuteContractProposal.Amino, + isClassic?: boolean + ): ExecuteContractProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { + value: { title, description, run_as, contract, msg, funds }, + } = data as ExecuteContractProposal.Amino; + return new ExecuteContractProposal( + title, + description, + run_as, + contract, + msg, + Coins.fromAmino(funds) + ); + } + + public toAmino(isClassic?: boolean): ExecuteContractProposal.Amino { + const { title, description, run_as, contract, execute_msg, coins } = this; + if (isClassic) { + throw new Error('Not supported for the network'); + } + return { + type: 'wasm/ExecuteContractProposal', + value: { + title, + description, + run_as, + contract, + msg: removeNull(execute_msg), + funds: coins.toAmino(), + }, + }; + } + + public static fromProto( + proto: ExecuteContractProposal.Proto, + isClassic?: boolean + ): ExecuteContractProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return new ExecuteContractProposal( + proto.title, + proto.description, + proto.runAs, + proto.contract, + JSON.parse(Buffer.from(proto.msg).toString('utf-8')), + Coins.fromProto(proto.funds) + ); + } + + public toProto(isClassic?: boolean): ExecuteContractProposal.Proto { + const { title, description, run_as, contract, execute_msg, coins } = this; + if (isClassic) { + throw new Error('Not supported for the network'); + } else { + return ExecuteContractProposal_pb.fromPartial({ + title, + description, + funds: coins.toProto(), + contract, + runAs: run_as, + msg: Buffer.from(JSON.stringify(removeNull(execute_msg)), 'utf-8'), + }); + } + } + + public packAny(isClassic?: boolean): Any { + if (isClassic) { + throw new Error('Not supported for the network'); + } else { + return Any.fromPartial({ + typeUrl: '/cosmwasm.wasm.v1.ExecuteContractProposal', + value: ExecuteContractProposal_pb.encode( + this.toProto(isClassic) + ).finish(), + }); + } + } + + public static unpackAny( + msgAny: Any, + isClassic?: boolean + ): ExecuteContractProposal { + return ExecuteContractProposal.fromProto( + ExecuteContractProposal_pb.decode(msgAny.value), + isClassic + ); + } + + public static fromData( + data: ExecuteContractProposal.Data, + isClassic?: boolean + ): ExecuteContractProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, run_as, contract, msg, funds } = + data as ExecuteContractProposal.Data; + return new ExecuteContractProposal( + title, + description, + run_as, + contract, + msg, + Coins.fromData(funds) + ); + } + + public toData(isClassic?: boolean): ExecuteContractProposal.Data { + const { title, description, run_as, contract, execute_msg, coins } = this; + if (isClassic) { + throw new Error('Not supported for the network'); + } else { + return { + '@type': '/cosmwasm.wasm.v1.ExecuteContractProposal', + title, + description, + run_as, + contract, + msg: execute_msg, + funds: coins.toData(), + }; + } + } +} + +export namespace ExecuteContractProposal { + export interface Amino { + type: 'wasm/ExecuteContractProposal'; + value: { + title: string; + description: string; + run_as: AccAddress; + contract: AccAddress; + msg: object | string; + funds: Coins.Amino; + }; + } + + export interface Data { + '@type': '/cosmwasm.wasm.v1.ExecuteContractProposal'; + title: string; + description: string; + run_as: AccAddress; + contract: AccAddress; + msg: object | string; + funds: Coins.Data; + } + + export type Proto = ExecuteContractProposal_pb; +} diff --git a/src/core/wasm/proposals/InstantiateContractProposal.ts b/src/core/wasm/proposals/InstantiateContractProposal.ts new file mode 100644 index 000000000..4cde57262 --- /dev/null +++ b/src/core/wasm/proposals/InstantiateContractProposal.ts @@ -0,0 +1,241 @@ +import { JSONSerializable, removeNull } from '../../../util/json'; +import { AccAddress } from '../../bech32'; +import { Coins } from '../../Coins'; +import { Any } from '@terra-money/terra.proto/google/protobuf/any'; +import { InstantiateContractProposal as InstantiateContractProposal_pb } from '@terra-money/terra.proto/cosmwasm/wasm/v1/proposal'; +import * as Long from 'long'; + +/** + * InstantiateContractProposal gov proposal content type to instantiate a + * contract. + */ +export class InstantiateContractProposal extends JSONSerializable< + InstantiateContractProposal.Amino, + InstantiateContractProposal.Data, + InstantiateContractProposal.Proto +> { + public init_coins: Coins; + + /** + * @param title a short summary + * @param description a human readable text + * @param run_as is a run_as address + * @param admin is an optional contract admin address who can migrate the contract, put empty string to disable migration + * @param code_id is the reference to the stored WASM code + * @param init_msg json encoded message to be passed to the contract on instantiation + * @param init_coins are transferred to the contract on execution + * @param label label for the contract. v2 supported only + */ + constructor( + public title: string, + public description: string, + public run_as: AccAddress, + public admin: AccAddress | undefined, + public code_id: number, + public init_msg: object | string, + init_coins: Coins.Input = {}, + public label: string + ) { + super(); + this.init_coins = new Coins(init_coins); + } + + public static fromAmino( + data: InstantiateContractProposal.Amino, + isClassic?: boolean + ): InstantiateContractProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { + value: { title, description, run_as, admin, code_id, msg, funds, label }, + } = data as InstantiateContractProposal.Amino; + return new InstantiateContractProposal( + title, + description, + run_as, + admin, + Number.parseInt(code_id), + msg, + Coins.fromAmino(funds), + label + ); + } + + public toAmino(isClassic?: boolean): InstantiateContractProposal.Amino { + const { + title, + description, + run_as, + admin, + code_id, + init_msg, + init_coins, + label, + } = this; + if (isClassic) { + throw new Error('Not supported for the network'); + } + return { + type: 'wasm/InstantiateContractProposal', + value: { + title, + description, + run_as, + admin, + code_id: code_id.toFixed(), + label, + msg: removeNull(init_msg), + funds: init_coins.toAmino(), + }, + }; + } + + public static fromProto( + proto: InstantiateContractProposal.Proto, + isClassic?: boolean + ): InstantiateContractProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return new InstantiateContractProposal( + proto.title, + proto.description, + proto.runAs, + proto.admin !== '' ? proto.admin : undefined, + proto.codeId.toNumber(), + JSON.parse(Buffer.from(proto.msg).toString('utf-8')), + Coins.fromProto(proto.funds), + proto.label + ); + } + + public toProto(isClassic?: boolean): InstantiateContractProposal.Proto { + const { + title, + description, + run_as, + admin, + code_id, + init_msg, + init_coins, + label, + } = this; + if (isClassic) { + throw new Error('Not supported for the network'); + } + return InstantiateContractProposal_pb.fromPartial({ + title, + description, + runAs: run_as, + admin, + codeId: Long.fromNumber(code_id), + funds: init_coins.toProto(), + msg: Buffer.from(JSON.stringify(init_msg), 'utf-8'), + label, + }); + } + + public packAny(isClassic?: boolean): Any { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return Any.fromPartial({ + typeUrl: '/cosmwasm.wasm.v1.InstantiateContractProposal', + value: InstantiateContractProposal_pb.encode( + this.toProto(isClassic) + ).finish(), + }); + } + + public static unpackAny( + msgAny: Any, + isClassic?: boolean + ): InstantiateContractProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return InstantiateContractProposal.fromProto( + InstantiateContractProposal_pb.decode(msgAny.value), + isClassic + ); + } + + public static fromData( + data: InstantiateContractProposal.Data, + isClassic?: boolean + ): InstantiateContractProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, run_as, admin, code_id, label, msg, funds } = + data as InstantiateContractProposal.Data; + return new InstantiateContractProposal( + title, + description, + run_as, + admin !== '' ? admin : undefined, + Number.parseInt(code_id), + msg, + Coins.fromData(funds), + label + ); + } + + public toData(isClassic?: boolean): InstantiateContractProposal.Data { + const { + title, + description, + run_as, + admin, + code_id, + label, + init_msg, + init_coins, + } = this; + if (isClassic) { + throw new Error('Not supported for the network'); + } + return { + '@type': '/cosmwasm.wasm.v1.InstantiateContractProposal', + title, + description, + run_as, + admin: admin || '', + code_id: code_id.toFixed(), + label, + msg: removeNull(init_msg), + funds: init_coins.toData(), + }; + } +} + +export namespace InstantiateContractProposal { + export interface Amino { + type: 'wasm/InstantiateContractProposal'; + value: { + title: string; + description: string; + run_as: AccAddress; + admin?: AccAddress; + code_id: string; + label: string; + msg: object | string; + funds: Coins.Amino; + }; + } + + export interface Data { + '@type': '/cosmwasm.wasm.v1.InstantiateContractProposal'; + title: string; + description: string; + run_as: AccAddress; + admin: AccAddress; + code_id: string; + label: string; + msg: object | string; + funds: Coins.Data; + } + + export type Proto = InstantiateContractProposal_pb; +} diff --git a/src/core/wasm/proposals/MigrateContractProposal.ts b/src/core/wasm/proposals/MigrateContractProposal.ts new file mode 100644 index 000000000..008a09d54 --- /dev/null +++ b/src/core/wasm/proposals/MigrateContractProposal.ts @@ -0,0 +1,176 @@ +import { JSONSerializable, removeNull } from '../../../util/json'; +import { AccAddress } from '../../bech32'; +import { Any } from '@terra-money/terra.proto/google/protobuf/any'; +import { MigrateContractProposal as MigrateContractProposal_pb } from '@terra-money/terra.proto/cosmwasm/wasm/v1/proposal'; +import * as Long from 'long'; + +/** MigrateContractProposal gov proposal content type to migrate a contract. */ +export class MigrateContractProposal extends JSONSerializable< + MigrateContractProposal.Amino, + MigrateContractProposal.Data, + MigrateContractProposal.Proto +> { + /** + * @param title a short summary + * @param description a human readable text + * @param contract contract address to be migrated from + * @param new_code_id reference to the new code on the blockchain + * @param migrate_msg JSON message to configure the migrate state of the contract + */ + constructor( + public title: string, + public description: string, + public contract: AccAddress, + public new_code_id: number, + public migrate_msg: object | string // json object or string + ) { + super(); + } + + public static fromAmino( + data: MigrateContractProposal.Amino, + isClassic?: boolean + ): MigrateContractProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { + value: { title, description, contract, code_id, msg }, + } = data as MigrateContractProposal.Amino; + return new MigrateContractProposal( + title, + description, + contract, + Number.parseInt(code_id), + msg + ); + } + + public toAmino(isClassic?: boolean): MigrateContractProposal.Amino { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, contract, new_code_id, migrate_msg } = this; + return { + type: 'wasm/MigrateContractProposal', + value: { + title, + description, + contract, + code_id: new_code_id.toFixed(), + msg: removeNull(migrate_msg), + }, + }; + } + + public static fromProto( + proto: MigrateContractProposal.Proto, + isClassic?: boolean + ): MigrateContractProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return new MigrateContractProposal( + proto.title, + proto.description, + proto.contract, + proto.codeId.toNumber(), + JSON.parse(Buffer.from(proto.msg).toString('utf-8')) + ); + } + + public toProto(isClassic?: boolean): MigrateContractProposal.Proto { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, contract, new_code_id, migrate_msg } = this; + return MigrateContractProposal_pb.fromPartial({ + title, + description, + contract, + codeId: Long.fromNumber(new_code_id), + msg: Buffer.from(JSON.stringify(migrate_msg), 'utf-8'), + }); + } + public packAny(isClassic?: boolean): Any { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return Any.fromPartial({ + typeUrl: '/cosmwasm.wasm.v1.MigrateContractProposal', + value: MigrateContractProposal_pb.encode( + this.toProto(isClassic) + ).finish(), + }); + } + + public static unpackAny( + msgAny: Any, + isClassic?: boolean + ): MigrateContractProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return MigrateContractProposal.fromProto( + MigrateContractProposal_pb.decode(msgAny.value), + isClassic + ); + } + + public static fromData( + data: MigrateContractProposal.Data, + isClassic?: boolean + ): MigrateContractProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, contract, code_id, msg } = + data as MigrateContractProposal.Data; + return new MigrateContractProposal( + title, + description, + contract, + Number.parseInt(code_id), + msg + ); + } + + public toData(isClassic?: boolean): MigrateContractProposal.Data { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, contract, new_code_id, migrate_msg } = this; + return { + '@type': '/cosmwasm.wasm.v1.MigrateContractProposal', + title, + description, + contract, + code_id: new_code_id.toFixed(), + msg: removeNull(migrate_msg), + }; + } +} + +export namespace MigrateContractProposal { + export interface Amino { + type: 'wasm/MigrateContractProposal'; + value: { + title: string; + description: string; + contract: AccAddress; + code_id: string; + msg: object | string; + }; + } + + export interface Data { + '@type': '/cosmwasm.wasm.v1.MigrateContractProposal'; + title: string; + description: string; + contract: AccAddress; + code_id: string; + msg: object | string; + } + + export type Proto = MigrateContractProposal_pb; +} diff --git a/src/core/wasm/proposals/PinCodesProposal.ts b/src/core/wasm/proposals/PinCodesProposal.ts new file mode 100644 index 000000000..21f647f00 --- /dev/null +++ b/src/core/wasm/proposals/PinCodesProposal.ts @@ -0,0 +1,152 @@ +import { JSONSerializable } from '../../../util/json'; +import { Any } from '@terra-money/terra.proto/google/protobuf/any'; +import { PinCodesProposal as PinCodesProposal_pb } from '@terra-money/terra.proto/cosmwasm/wasm/v1/proposal'; +import * as Long from 'long'; + +/** + * PinCodesProposal gov proposal content type to pin a set of code ids in the + * wasmvm cache. + */ +export class PinCodesProposal extends JSONSerializable< + PinCodesProposal.Amino, + PinCodesProposal.Data, + PinCodesProposal.Proto +> { + /** + * @param title a short summary + * @param description a human readable text + * @param code_ids the address of the smart code_ids + */ + constructor( + public title: string, + public description: string, + public code_ids: number[] + ) { + super(); + } + + public static fromAmino( + data: PinCodesProposal.Amino, + isClassic?: boolean + ): PinCodesProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { + value: { title, description, code_ids }, + } = data as PinCodesProposal.Amino; + return new PinCodesProposal( + title, + description, + code_ids.map(cid => Number.parseInt(cid)) + ); + } + + public toAmino(isClassic?: boolean): PinCodesProposal.Amino { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, code_ids } = this; + return { + type: 'wasm/PinCodesProposal', + value: { + title, + description, + code_ids: code_ids.map(cid => cid.toFixed()), + }, + }; + } + + public static fromProto( + proto: PinCodesProposal.Proto, + isClassic?: boolean + ): PinCodesProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return new PinCodesProposal( + proto.title, + proto.description, + proto.codeIds.map(codeId => codeId.toNumber()) + ); + } + + public toProto(isClassic?: boolean): PinCodesProposal.Proto { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, code_ids } = this; + return PinCodesProposal_pb.fromPartial({ + title, + description, + codeIds: code_ids.map(cid => Long.fromNumber(cid)), + }); + } + public packAny(isClassic?: boolean): Any { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return Any.fromPartial({ + typeUrl: '/cosmwasm.wasm.v1.PinCodesProposal', + value: PinCodesProposal_pb.encode(this.toProto(isClassic)).finish(), + }); + } + + public static unpackAny(msgAny: Any, isClassic?: boolean): PinCodesProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return PinCodesProposal.fromProto( + PinCodesProposal_pb.decode(msgAny.value), + isClassic + ); + } + + public static fromData( + data: PinCodesProposal.Data, + isClassic?: boolean + ): PinCodesProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, code_ids } = data as PinCodesProposal.Data; + return new PinCodesProposal( + title, + description, + code_ids.map(cid => Number.parseInt(cid)) + ); + } + + public toData(isClassic?: boolean): PinCodesProposal.Data { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, code_ids } = this; + return { + '@type': '/cosmwasm.wasm.v1.PinCodesProposal', + title, + description, + code_ids: code_ids.map(cid => cid.toFixed()), + }; + } +} + +export namespace PinCodesProposal { + export interface Amino { + type: 'wasm/PinCodesProposal'; + value: { + title: string; + description: string; + code_ids: string[]; + }; + } + + export interface Data { + '@type': '/cosmwasm.wasm.v1.PinCodesProposal'; + title: string; + description: string; + code_ids: string[]; + } + + export type Proto = PinCodesProposal_pb; +} diff --git a/src/core/wasm/proposals/StoreCodeProposal.ts b/src/core/wasm/proposals/StoreCodeProposal.ts new file mode 100644 index 000000000..a23ae7299 --- /dev/null +++ b/src/core/wasm/proposals/StoreCodeProposal.ts @@ -0,0 +1,209 @@ +import { JSONSerializable } from '../../../util/json'; +import { AccAddress } from '../../bech32'; +import { Any } from '@terra-money/legacy.proto/google/protobuf/any'; +import { StoreCodeProposal as StoreCodeProposal_pb } from '@terra-money/terra.proto/cosmwasm/wasm/v1/proposal'; +import { AccessConfig } from '../AccessConfig'; + +/** + * StoreCodeProposal gov proposal content type to submit WASM code to the system + */ +export class StoreCodeProposal extends JSONSerializable< + StoreCodeProposal.Amino, + StoreCodeProposal.Data, + StoreCodeProposal.Proto +> { + /** + * @param title a short summary + * @param description a human readable text + * @param run_as the address that is passed to the contract's environment as sender + * @param wasm_byte_code can be raw or gzip compressed + * @param instantiate_permission to apply on contract creation, optional + */ + constructor( + public title: string, + public description: string, + public run_as: string, + public wasm_byte_code: string, + public instantiate_permission?: AccessConfig + ) { + super(); + } + + public static fromAmino( + data: StoreCodeProposal.Amino, + isClassic?: boolean + ): StoreCodeProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { + value: { + title, + description, + run_as, + wasm_byte_code, + instantiate_permission, + }, + } = data; + return new StoreCodeProposal( + title, + description, + run_as, + wasm_byte_code, + instantiate_permission + ? AccessConfig.fromAmino(instantiate_permission) + : undefined + ); + } + + public toAmino(isClassic?: boolean): StoreCodeProposal.Amino { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { + title, + description, + run_as, + wasm_byte_code, + instantiate_permission, + } = this; + return { + type: 'wasm/StoreCodeProposal', + value: { + title, + description, + run_as, + wasm_byte_code, + instantiate_permission: instantiate_permission?.toAmino(), + }, + }; + } + + public static fromData( + data: StoreCodeProposal.Data, + isClassic?: boolean + ): StoreCodeProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { + title, + description, + run_as, + wasm_byte_code, + instantiate_permission, + } = data; + return new StoreCodeProposal( + title, + description, + run_as, + wasm_byte_code, + instantiate_permission + ? AccessConfig.fromData(instantiate_permission) + : undefined + ); + } + + public toData(isClassic?: boolean): StoreCodeProposal.Data { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { + title, + description, + run_as, + wasm_byte_code, + instantiate_permission, + } = this; + return { + '@type': '/cosmwasm.wasm.v1.StoreCodeProposal', + title, + description, + run_as, + wasm_byte_code, + instantiate_permission: instantiate_permission?.toData(), + }; + } + + public static fromProto( + proto: StoreCodeProposal.Proto, + isClassic?: boolean + ): StoreCodeProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return new StoreCodeProposal( + proto.title, + proto.description, + proto.runAs, + Buffer.from(proto.wasmByteCode).toString('base64'), + proto.instantiatePermission + ? AccessConfig.fromProto(proto.instantiatePermission) + : undefined + ); + } + + public toProto(isClassic?: boolean): StoreCodeProposal.Proto { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { + title, + description, + run_as, + wasm_byte_code, + instantiate_permission, + } = this; + return StoreCodeProposal_pb.fromPartial({ + title, + description, + runAs: run_as, + wasmByteCode: Buffer.from(wasm_byte_code, 'base64'), + instantiatePermission: instantiate_permission?.toProto(), + }); + } + + public packAny(isClassic?: boolean): Any { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return Any.fromPartial({ + typeUrl: '/cosmwasm.wasm.v1.StoreCodeProposal', + value: StoreCodeProposal_pb.encode(this.toProto(isClassic)).finish(), + }); + } + + public static unpackAny(msgAny: Any, isClassic?: boolean): StoreCodeProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return StoreCodeProposal.fromProto( + StoreCodeProposal_pb.decode(msgAny.value), + isClassic + ); + } +} + +export namespace StoreCodeProposal { + export interface Amino { + type: 'wasm/StoreCodeProposal'; + value: { + title: string; + description: string; + run_as: AccAddress; + wasm_byte_code: string; + instantiate_permission?: AccessConfig.Amino; + }; + } + + export interface Data { + '@type': '/cosmwasm.wasm.v1.StoreCodeProposal'; + title: string; + description: string; + run_as: AccAddress; + wasm_byte_code: string; + instantiate_permission?: AccessConfig.Data; + } + + export type Proto = StoreCodeProposal_pb; +} diff --git a/src/core/wasm/proposals/SudoContractProposal.ts b/src/core/wasm/proposals/SudoContractProposal.ts new file mode 100644 index 000000000..cf1f8d3e4 --- /dev/null +++ b/src/core/wasm/proposals/SudoContractProposal.ts @@ -0,0 +1,152 @@ +import { JSONSerializable, removeNull } from '../../../util/json'; +import { AccAddress } from '../../bech32'; +import { Any } from '@terra-money/terra.proto/google/protobuf/any'; +import { SudoContractProposal as SudoContractProposal_pb } from '@terra-money/terra.proto/cosmwasm/wasm/v1/proposal'; + +export class SudoContractProposal extends JSONSerializable< + SudoContractProposal.Amino, + SudoContractProposal.Data, + SudoContractProposal.Proto +> { + /** + * @param title a short summary + * @param description a human readable text + * @param contract contract address to be migrated from + * @param msg JSON message to configure the migrate state of the contract + */ + constructor( + public title: string, + public description: string, + public contract: AccAddress, + public msg: object | string // json object or string + ) { + super(); + } + + public static fromAmino( + data: SudoContractProposal.Amino, + isClassic?: boolean + ): SudoContractProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { + value: { title, description, contract, msg }, + } = data as SudoContractProposal.Amino; + return new SudoContractProposal(title, description, contract, msg); + } + + public toAmino(isClassic?: boolean): SudoContractProposal.Amino { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, contract, msg } = this; + return { + type: 'wasm/SudoContractProposal', + value: { + title, + description, + contract, + msg: removeNull(msg), + }, + }; + } + + public static fromProto( + proto: SudoContractProposal.Proto, + isClassic?: boolean + ): SudoContractProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return new SudoContractProposal( + proto.title, + proto.description, + proto.contract, + JSON.parse(Buffer.from(proto.msg).toString('utf-8')) + ); + } + + public toProto(isClassic?: boolean): SudoContractProposal.Proto { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, contract, msg } = this; + return SudoContractProposal_pb.fromPartial({ + title, + description, + contract, + msg: Buffer.from(JSON.stringify(msg), 'utf-8'), + }); + } + public packAny(isClassic?: boolean): Any { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return Any.fromPartial({ + typeUrl: '/cosmwasm.wasm.v1.SudoContractProposal', + value: SudoContractProposal_pb.encode(this.toProto(isClassic)).finish(), + }); + } + + public static unpackAny( + msgAny: Any, + isClassic?: boolean + ): SudoContractProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return SudoContractProposal.fromProto( + SudoContractProposal_pb.decode(msgAny.value), + isClassic + ); + } + + public static fromData( + data: SudoContractProposal.Data, + isClassic?: boolean + ): SudoContractProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, contract, msg } = + data as SudoContractProposal.Data; + return new SudoContractProposal(title, description, contract, msg); + } + + public toData(isClassic?: boolean): SudoContractProposal.Data { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, contract, msg } = this; + return { + '@type': '/cosmwasm.wasm.v1.SudoContractProposal', + title, + description, + contract, + msg: removeNull(msg), + }; + } +} + +export namespace SudoContractProposal { + export interface Amino { + type: 'wasm/SudoContractProposal'; + value: { + title: string; + description: string; + contract: AccAddress; + msg: object | string; + }; + } + + export interface Data { + '@type': '/cosmwasm.wasm.v1.SudoContractProposal'; + title: string; + description: string; + contract: AccAddress; + msg: object | string; + } + + export type Proto = SudoContractProposal_pb; +} diff --git a/src/core/wasm/proposals/UnpinCodesProposal.ts b/src/core/wasm/proposals/UnpinCodesProposal.ts new file mode 100644 index 000000000..2b04e4c74 --- /dev/null +++ b/src/core/wasm/proposals/UnpinCodesProposal.ts @@ -0,0 +1,155 @@ +import { JSONSerializable } from '../../../util/json'; +import { Any } from '@terra-money/terra.proto/google/protobuf/any'; +import { UnpinCodesProposal as UnpinCodesProposal_pb } from '@terra-money/terra.proto/cosmwasm/wasm/v1/proposal'; +import * as Long from 'long'; + +/** + * UnpinCodesProposal gov proposal content type to unpin a set of code ids in + * the wasmvm cache. + */ +export class UnpinCodesProposal extends JSONSerializable< + UnpinCodesProposal.Amino, + UnpinCodesProposal.Data, + UnpinCodesProposal.Proto +> { + /** + * @param title a short summary + * @param description a human readable text + * @param code_ids the address of the smart code_ids + */ + constructor( + public title: string, + public description: string, + public code_ids: number[] + ) { + super(); + } + + public static fromAmino( + data: UnpinCodesProposal.Amino, + isClassic?: boolean + ): UnpinCodesProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { + value: { title, description, code_ids }, + } = data as UnpinCodesProposal.Amino; + return new UnpinCodesProposal( + title, + description, + code_ids.map(cid => Number.parseInt(cid)) + ); + } + + public toAmino(isClassic?: boolean): UnpinCodesProposal.Amino { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, code_ids } = this; + return { + type: 'wasm/UnpinCodesProposal', + value: { + title, + description, + code_ids: code_ids.map(cid => cid.toFixed()), + }, + }; + } + + public static fromProto( + proto: UnpinCodesProposal.Proto, + isClassic?: boolean + ): UnpinCodesProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return new UnpinCodesProposal( + proto.title, + proto.description, + proto.codeIds.map(codeId => codeId.toNumber()) + ); + } + + public toProto(isClassic?: boolean): UnpinCodesProposal.Proto { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, code_ids } = this; + return UnpinCodesProposal_pb.fromPartial({ + title, + description, + codeIds: code_ids.map(cid => Long.fromNumber(cid)), + }); + } + public packAny(isClassic?: boolean): Any { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return Any.fromPartial({ + typeUrl: '/cosmwasm.wasm.v1.UnpinCodesProposal', + value: UnpinCodesProposal_pb.encode(this.toProto(isClassic)).finish(), + }); + } + + public static unpackAny( + msgAny: Any, + isClassic?: boolean + ): UnpinCodesProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return UnpinCodesProposal.fromProto( + UnpinCodesProposal_pb.decode(msgAny.value), + isClassic + ); + } + + public static fromData( + data: UnpinCodesProposal.Data, + isClassic?: boolean + ): UnpinCodesProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, code_ids } = data as UnpinCodesProposal.Data; + return new UnpinCodesProposal( + title, + description, + code_ids.map(cid => Number.parseInt(cid)) + ); + } + + public toData(isClassic?: boolean): UnpinCodesProposal.Data { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, code_ids } = this; + return { + '@type': '/cosmwasm.wasm.v1.UnpinCodesProposal', + title, + description, + code_ids: code_ids.map(cid => cid.toFixed()), + }; + } +} + +export namespace UnpinCodesProposal { + export interface Amino { + type: 'wasm/UnpinCodesProposal'; + value: { + title: string; + description: string; + code_ids: string[]; + }; + } + + export interface Data { + '@type': '/cosmwasm.wasm.v1.UnpinCodesProposal'; + title: string; + description: string; + code_ids: string[]; + } + + export type Proto = UnpinCodesProposal_pb; +} diff --git a/src/core/wasm/proposals/UpdateAdminProposal.ts b/src/core/wasm/proposals/UpdateAdminProposal.ts new file mode 100644 index 000000000..a5a1261a9 --- /dev/null +++ b/src/core/wasm/proposals/UpdateAdminProposal.ts @@ -0,0 +1,153 @@ +import { JSONSerializable } from '../../../util/json'; +import { AccAddress } from '../../bech32'; +import { Any } from '@terra-money/terra.proto/google/protobuf/any'; +import { UpdateAdminProposal as UpdateAdminProposal_pb } from '@terra-money/terra.proto/cosmwasm/wasm/v1/proposal'; + +/** UpdateAdminProposal gov proposal content type to set an admin for a contract. */ +export class UpdateAdminProposal extends JSONSerializable< + UpdateAdminProposal.Amino, + UpdateAdminProposal.Data, + UpdateAdminProposal.Proto +> { + /** + * @param title a short summary + * @param description a human readable text + * @param contract the address of the smart contract + * @param new_admin address to be set + */ + constructor( + public title: string, + public description: string, + public contract: AccAddress, + public new_admin: AccAddress + ) { + super(); + } + + public static fromAmino( + data: UpdateAdminProposal.Amino, + isClassic?: boolean + ): UpdateAdminProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { + value: { title, description, contract, new_admin }, + } = data as UpdateAdminProposal.Amino; + return new UpdateAdminProposal(title, description, contract, new_admin); + } + + public toAmino(isClassic?: boolean): UpdateAdminProposal.Amino { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, contract, new_admin } = this; + return { + type: 'wasm/UpdateAdminProposal', + value: { + title, + description, + contract, + new_admin, + }, + }; + } + + public static fromProto( + proto: UpdateAdminProposal.Proto, + isClassic?: boolean + ): UpdateAdminProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return new UpdateAdminProposal( + proto.title, + proto.description, + proto.contract, + proto.newAdmin + ); + } + + public toProto(isClassic?: boolean): UpdateAdminProposal.Proto { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, contract, new_admin } = this; + return UpdateAdminProposal_pb.fromPartial({ + title, + description, + contract, + newAdmin: new_admin, + }); + } + public packAny(isClassic?: boolean): Any { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return Any.fromPartial({ + typeUrl: '/cosmwasm.wasm.v1.UpdateAdminProposal', + value: UpdateAdminProposal_pb.encode(this.toProto(isClassic)).finish(), + }); + } + + public static unpackAny( + msgAny: Any, + isClassic?: boolean + ): UpdateAdminProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return UpdateAdminProposal.fromProto( + UpdateAdminProposal_pb.decode(msgAny.value), + isClassic + ); + } + + public static fromData( + data: UpdateAdminProposal.Data, + isClassic?: boolean + ): UpdateAdminProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, contract, new_admin } = + data as UpdateAdminProposal.Data; + return new UpdateAdminProposal(title, description, contract, new_admin); + } + + public toData(isClassic?: boolean): UpdateAdminProposal.Data { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, contract, new_admin } = this; + return { + '@type': '/cosmwasm.wasm.v1.UpdateAdminProposal', + title, + description, + contract, + new_admin, + }; + } +} + +export namespace UpdateAdminProposal { + export interface Amino { + type: 'wasm/UpdateAdminProposal'; + value: { + title: string; + description: string; + contract: AccAddress; + new_admin: AccAddress; + }; + } + + export interface Data { + '@type': '/cosmwasm.wasm.v1.UpdateAdminProposal'; + title: string; + description: string; + contract: AccAddress; + new_admin: AccAddress; + } + + export type Proto = UpdateAdminProposal_pb; +} diff --git a/src/core/wasm/proposals/UpdateInstantiateConfigProposal.ts b/src/core/wasm/proposals/UpdateInstantiateConfigProposal.ts new file mode 100644 index 000000000..b701591d8 --- /dev/null +++ b/src/core/wasm/proposals/UpdateInstantiateConfigProposal.ts @@ -0,0 +1,159 @@ +import { JSONSerializable } from '../../../util/json'; +import { Any } from '@terra-money/terra.proto/google/protobuf/any'; +import { UpdateInstantiateConfigProposal as UpdateInstantiateConfigProposal_pb } from '@terra-money/terra.proto/cosmwasm/wasm/v1/proposal'; +import * as Long from 'long'; +import { AccessConfigUpdate } from '../AccessConfigUpdate'; + +/** + * UpdateInstantiateConfigProposal gov proposal content type to pin a set of code ids in the + * wasmvm cache. + */ +export class UpdateInstantiateConfigProposal extends JSONSerializable< + UpdateInstantiateConfigProposal.Amino, + UpdateInstantiateConfigProposal.Data, + UpdateInstantiateConfigProposal.Proto +> { + /** + * @param title a short summary + * @param description a human readable text + * @param access_config_updates the address of the smart access_config_updates + */ + constructor( + public title: string, + public description: string, + public access_config_updates: AccessConfigUpdate[] + ) { + super(); + } + + public static fromAmino( + data: UpdateInstantiateConfigProposal.Amino, + isClassic?: boolean + ): UpdateInstantiateConfigProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { + value: { title, description, access_config_updates }, + } = data as UpdateInstantiateConfigProposal.Amino; + return new UpdateInstantiateConfigProposal( + title, + description, + access_config_updates.map(acu => AccessConfigUpdate.fromAmino(acu)) + ); + } + + public toAmino(isClassic?: boolean): UpdateInstantiateConfigProposal.Amino { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, access_config_updates } = this; + return { + type: 'wasm/UpdateInstantiateConfigProposal', + value: { + title, + description, + access_config_updates: access_config_updates.map(acu => acu.toAmino()), + }, + }; + } + + public static fromProto( + proto: UpdateInstantiateConfigProposal.Proto, + isClassic?: boolean + ): UpdateInstantiateConfigProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return new UpdateInstantiateConfigProposal( + proto.title, + proto.description, + proto.accessConfigUpdates.map(acu => AccessConfigUpdate.fromProto(acu)) + ); + } + + public toProto(isClassic?: boolean): UpdateInstantiateConfigProposal.Proto { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, access_config_updates } = this; + return UpdateInstantiateConfigProposal_pb.fromPartial({ + title, + description, + accessConfigUpdates: access_config_updates.map(acu => acu.toProto()), + }); + } + public packAny(isClassic?: boolean): Any { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return Any.fromPartial({ + typeUrl: '/cosmwasm.wasm.v1.UpdateInstantiateConfigProposal', + value: UpdateInstantiateConfigProposal_pb.encode( + this.toProto(isClassic) + ).finish(), + }); + } + + public static unpackAny( + msgAny: Any, + isClassic?: boolean + ): UpdateInstantiateConfigProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + return UpdateInstantiateConfigProposal.fromProto( + UpdateInstantiateConfigProposal_pb.decode(msgAny.value), + isClassic + ); + } + + public static fromData( + data: UpdateInstantiateConfigProposal.Data, + isClassic?: boolean + ): UpdateInstantiateConfigProposal { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, access_config_updates } = + data as UpdateInstantiateConfigProposal.Data; + return new UpdateInstantiateConfigProposal( + title, + description, + access_config_updates.map(acu => AccessConfigUpdate.fromData(acu)) + ); + } + + public toData(isClassic?: boolean): UpdateInstantiateConfigProposal.Data { + if (isClassic) { + throw new Error('Not supported for the network'); + } + const { title, description, access_config_updates } = this; + return { + '@type': '/cosmwasm.wasm.v1.UpdateInstantiateConfigProposal', + title, + description, + access_config_updates: access_config_updates.map(acu => acu.toData()), + }; + } +} + +export namespace UpdateInstantiateConfigProposal { + export interface Amino { + type: 'wasm/UpdateInstantiateConfigProposal'; + value: { + title: string; + description: string; + access_config_updates: AccessConfigUpdate.Amino[]; + }; + } + + export interface Data { + '@type': '/cosmwasm.wasm.v1.UpdateInstantiateConfigProposal'; + title: string; + description: string; + access_config_updates: AccessConfigUpdate.Data[]; + } + + export type Proto = UpdateInstantiateConfigProposal_pb; +} diff --git a/src/core/wasm/proposals/index.ts b/src/core/wasm/proposals/index.ts new file mode 100644 index 000000000..39564117c --- /dev/null +++ b/src/core/wasm/proposals/index.ts @@ -0,0 +1,10 @@ +export * from './ClearAdminProposal'; +export * from './ExecuteContractProposal'; +export * from './InstantiateContractProposal'; +export * from './MigrateContractProposal'; +export * from './PinCodesProposal'; +export * from './StoreCodeProposal'; +export * from './SudoContractProposal'; +export * from './UnpinCodesProposal'; +export * from './UpdateAdminProposal'; +export * from './UpdateInstantiateConfigProposal'; diff --git a/src/key/Key.ts b/src/key/Key.ts index ced761c38..24f8b3d55 100644 --- a/src/key/Key.ts +++ b/src/key/Key.ts @@ -66,8 +66,12 @@ export abstract class Key { * only used Amino sign * * @param tx sign-message of the transaction to sign + * @param isClassic target network is isClassic or not? */ - public async createSignatureAmino(tx: SignDoc): Promise { + public async createSignatureAmino( + tx: SignDoc, + isClassic?: boolean + ): Promise { if (!this.publicKey) { throw new Error( 'Signature could not be created: Key instance missing publicKey' @@ -79,7 +83,9 @@ export abstract class Key { new SignatureV2.Descriptor( new SignatureV2.Descriptor.Single( SignMode.SIGN_MODE_LEGACY_AMINO_JSON, - (await this.sign(Buffer.from(tx.toAminoJSON()))).toString('base64') + (await this.sign(Buffer.from(tx.toAminoJSON(isClassic)))).toString( + 'base64' + ) ) ), tx.sequence @@ -90,8 +96,12 @@ export abstract class Key { * Signs a [[SignDoc]] with the method supplied by the child class. * * @param tx sign-message of the transaction to sign + * @param isClassic target network is isClassic or not? */ - public async createSignature(signDoc: SignDoc): Promise { + public async createSignature( + signDoc: SignDoc, + isClassic?: boolean + ): Promise { if (!this.publicKey) { throw new Error( 'Signature could not be created: Key instance missing publicKey' @@ -108,9 +118,9 @@ export abstract class Key { ), ]; - const sigBytes = (await this.sign(Buffer.from(signDoc.toBytes()))).toString( - 'base64' - ); + const sigBytes = ( + await this.sign(Buffer.from(signDoc.toBytes(isClassic))) + ).toString('base64'); // restore signDoc to origin signDoc.auth_info.signer_infos = signerInfos; @@ -128,7 +138,11 @@ export abstract class Key { * Signs a [[Tx]] and adds the signature to a generated StdTx that is ready to be broadcasted. * @param tx */ - public async signTx(tx: Tx, options: SignOptions): Promise { + public async signTx( + tx: Tx, + options: SignOptions, + isClassic?: boolean + ): Promise { const copyTx = new Tx(tx.body, new AuthInfo([], tx.auth_info.fee), []); const sign_doc = new SignDoc( options.chainID, @@ -140,9 +154,9 @@ export abstract class Key { let signature: SignatureV2; if (options.signMode === SignMode.SIGN_MODE_LEGACY_AMINO_JSON) { - signature = await this.createSignatureAmino(sign_doc); + signature = await this.createSignatureAmino(sign_doc, isClassic); } else { - signature = await this.createSignature(sign_doc); + signature = await this.createSignature(sign_doc, isClassic); } const sigData = signature.data.single as SignatureV2.Descriptor.Single; diff --git a/src/key/MnemonicKey.spec.ts b/src/key/MnemonicKey.spec.ts index 7db834d21..5362796dc 100644 --- a/src/key/MnemonicKey.spec.ts +++ b/src/key/MnemonicKey.spec.ts @@ -68,7 +68,7 @@ describe('MnemonicKey', () => { const { data: { single }, - } = await mk.createSignatureAmino(signDoc); + } = await mk.createSignatureAmino(signDoc, true); expect((single as any).signature).toEqual( 'FJKAXRxNB5ruqukhVqZf3S/muZEUmZD10fVmWycdVIxVWiCXXFsUy2VY2jINEOUGNwfrqEZsT2dUfAvWj8obLg==' ); @@ -115,17 +115,17 @@ describe('MnemonicKey', () => { new TxBody([msgSend]) ); - const a1Signature = await a1Key.createSignatureAmino(signDoc); + const a1Signature = await a1Key.createSignatureAmino(signDoc, true); expect((a1Signature.data.single as any).signature).toEqual( '/kIFqGnmgOqMzf7guoe1eDTA1W5TjJcelJSRBdN0CTRyyxTMIbsxd+wL4fatHAq4hYOTf/zxD4l5xyU7/POZyg==' ); - const a2Signature = await a2Key.createSignatureAmino(signDoc); + const a2Signature = await a2Key.createSignatureAmino(signDoc, true); expect((a2Signature.data.single as any).signature).toEqual( 'hEjv9CnXQa89robHVsHS3GDZJiunnNb8xqziWD8D4aAuBXwxDzUXY14IE7q9Z3Qh0VMb3FBHuogHi7QZn2pM9g==' ); - const a3Signature = await a3Key.createSignatureAmino(signDoc); + const a3Signature = await a3Key.createSignatureAmino(signDoc, true); expect((a3Signature.data.single as any).signature).toEqual( 'CwHdmwC9ADtr5cTUdRZEfAcA8d1bgkF8fB+DcbB6MBB6amJz51WQYfVE1VgVTEY8Lyzg8+s8gX6nkqkXPeX72A==' ); @@ -172,7 +172,7 @@ describe('MnemonicKey', () => { ) ); - const signature = await key.createSignatureAmino(signDoc); + const signature = await key.createSignatureAmino(signDoc, true); expect((signature.data.single as any).signature).toEqual( 'YA/ToXLxuuAOQlpm5trbIUu2zv5NfBmeHz2jmXgNrt8jP+odukerfri3DUXAJuhETAMHVVV78t7Q4xC0j+CVkA==' ); diff --git a/src/key/RawKey.spec.ts b/src/key/RawKey.spec.ts index 13e0e1224..0407f20ed 100644 --- a/src/key/RawKey.spec.ts +++ b/src/key/RawKey.spec.ts @@ -70,7 +70,7 @@ describe('RawKey', () => { const { data: { single }, - } = await rk.createSignatureAmino(signDoc); + } = await rk.createSignatureAmino(signDoc, true); expect((single as SignatureV2.Descriptor.Single).signature).toEqual( 'FJKAXRxNB5ruqukhVqZf3S/muZEUmZD10fVmWycdVIxVWiCXXFsUy2VY2jINEOUGNwfrqEZsT2dUfAvWj8obLg==' ); diff --git a/src/key/index.ts b/src/key/index.ts index 3565fe8cb..c93be623a 100644 --- a/src/key/index.ts +++ b/src/key/index.ts @@ -1,4 +1,3 @@ export * from './Key'; export * from './MnemonicKey'; export * from './RawKey'; -export * from './CLIKey'; diff --git a/src/util/contract.ts b/src/util/contract.ts index d3f0c489c..8efa61810 100644 --- a/src/util/contract.ts +++ b/src/util/contract.ts @@ -23,7 +23,8 @@ export function getCodeId( export function getContractAddress( txResult: WaitTxBroadcastResult | BlockTxBroadcastResult | TxInfo, - msgIndex = 0 + msgIndex = 0, + isClassic = false ): string { if ( isTxError(txResult) || @@ -32,10 +33,18 @@ export function getContractAddress( ) { throw new Error('could not parse contract address -- tx logs are empty.'); } + let eventName: string; + let attributeKey: string; + if (isClassic) { + eventName = 'instantiate_contract'; + attributeKey = 'contract_address'; + } else { + eventName = 'wasm'; + attributeKey = '_contract_address'; + } + console.log(txResult.logs[msgIndex].eventsByType['wasm']); const contractAddress = - txResult.logs[msgIndex].eventsByType['instantiate_contract'][ - 'contract_address' - ][0]; + txResult.logs[msgIndex].eventsByType[eventName][attributeKey][0]; return contractAddress; } @@ -46,7 +55,8 @@ export interface ContractEvent { export function getContractEvents( txResult: WaitTxBroadcastResult | BlockTxBroadcastResult | TxInfo, - msgIndex = 0 + msgIndex = 0, + isClassic = false ): ContractEvent[] { if ( isTxError(txResult) || @@ -55,16 +65,24 @@ export function getContractEvents( ) { throw new Error('could not parse contract events -- tx logs are empty.'); } + + let eventName: string; + let attributeKey: string; + if (isClassic) { + eventName = 'from_contract'; + attributeKey = 'contract_address'; + } else { + eventName = 'instantiate'; + attributeKey = '_contract_address'; + } + const contractEvents: ContractEvent[] = []; for (const event of txResult.logs[msgIndex].events) { - if (event.type === 'from_contract') { + if (event.type === eventName) { let eventData: ContractEvent = { contract_address: '' }; // will be overwritten let currentContractAddress = event.attributes[0].value; for (const att of event.attributes) { - if ( - att.key == 'contract_address' && - currentContractAddress !== att.value - ) { + if (att.key == attributeKey && currentContractAddress !== att.value) { contractEvents.push(eventData); eventData = { contract_address: '' }; currentContractAddress = att.value; @@ -75,5 +93,5 @@ export function getContractEvents( return contractEvents; } } - throw new Error("could not find event type 'from_contract' in logs"); + throw new Error(`could not find event type ${eventName} in logs`); } diff --git a/src/util/json.ts b/src/util/json.ts index 9fb301b77..a9cdaedd3 100644 --- a/src/util/json.ts +++ b/src/util/json.ts @@ -20,14 +20,14 @@ export function prepareSignBytes(obj: any): any { } export abstract class JSONSerializable { - public abstract toAmino(): A; - public abstract toData(): D; - public abstract toProto(): P; - public toJSON(): string { - return JSON.stringify(prepareSignBytes(this.toData())); + public abstract toAmino(isClassic?: boolean): A; + public abstract toData(isClassic?: boolean): D; + public abstract toProto(isClassic?: boolean): P; + public toJSON(isClassic?: boolean): string { + return JSON.stringify(prepareSignBytes(this.toData(isClassic))); } - public toAminoJSON(): string { - return JSON.stringify(prepareSignBytes(this.toAmino())); + public toAminoJSON(isClassic?: boolean): string { + return JSON.stringify(prepareSignBytes(this.toAmino(isClassic))); } }