From 870e74dffd65bef2c9e01a058cb4532244ba3413 Mon Sep 17 00:00:00 2001 From: Paul Kim Date: Thu, 26 May 2022 13:47:31 +0900 Subject: [PATCH] Support Terra 2.0 (#285) * build: bump version to 3.1.0 Co-authored-by: Geoff Lee Co-authored-by: sim Co-authored-by: JSHan94 Co-authored-by: Jungsu Han --- README.md | 32 +- integration-tests/contract.ts | 29 +- integration-tests/contract.wasm.7 | Bin 0 -> 132367 bytes integration-tests/contract.wasm.8 | Bin 0 -> 132769 bytes integration-tests/send.ts | 13 +- integration-tests/sendMultisend.ts | 30 +- integration-tests/sendMultisig.ts | 9 +- integration-tests/txSearch.ts | 15 +- package-lock.json | 721 +- package.json | 5 +- src/client/LocalTerra.ts | 3 +- src/client/lcd/APIRequester.ts | 2 +- src/client/lcd/LCDClient.ts | 56 +- src/client/lcd/LCDUtils.spec.ts | 12 +- src/client/lcd/Wallet.ts | 27 +- src/client/lcd/api/AuthAPI.spec.ts | 11 +- src/client/lcd/api/AuthAPI.ts | 18 +- src/client/lcd/api/AuthzAPI.ts | 58 +- src/client/lcd/api/BankAPI.spec.ts | 11 +- src/client/lcd/api/BankAPI.ts | 24 + src/client/lcd/api/DistributionAPI.spec.ts | 114 +- src/client/lcd/api/DistributionAPI.ts | 6 + src/client/lcd/api/FeeGrantAPI.spec.ts | 8 +- src/client/lcd/api/FeeGrantAPI.ts | 6 + src/client/lcd/api/GovAPI.spec.ts | 44 +- src/client/lcd/api/GovAPI.ts | 24 +- src/client/lcd/api/IbcAPI.spec.ts | 12 +- src/client/lcd/api/IbcAPI.ts | 32 +- src/client/lcd/api/IbcTransferAPI.spec.ts | 11 +- src/client/lcd/api/IbcTransferAPI.ts | 28 +- src/client/lcd/api/MarketAPI.spec.ts | 22 +- src/client/lcd/api/MarketAPI.ts | 17 + src/client/lcd/api/MintAPI.spec.ts | 9 +- src/client/lcd/api/MintAPI.ts | 6 + src/client/lcd/api/OracleAPI.spec.ts | 36 +- src/client/lcd/api/OracleAPI.ts | 37 + src/client/lcd/api/SlashingAPI.spec.ts | 9 +- src/client/lcd/api/SlashingAPI.ts | 6 + src/client/lcd/api/StakingAPI.spec.ts | 205 +- src/client/lcd/api/StakingAPI.ts | 6 + src/client/lcd/api/TendermintAPI.spec.ts | 17 +- src/client/lcd/api/TendermintAPI.ts | 6 + src/client/lcd/api/TreasuryAPI.spec.ts | 55 +- src/client/lcd/api/TreasuryAPI.ts | 33 + src/client/lcd/api/TxAPI.spec.ts | 8 +- src/client/lcd/api/TxAPI.ts | 38 +- src/client/lcd/api/WasmAPI.spec.ts | 22 +- src/client/lcd/api/WasmAPI.ts | 266 +- src/core/Msg.ts | 337 +- src/core/SignDoc.ts | 16 +- src/core/Tx.spec.ts | 2 +- src/core/Tx.ts | 54 +- src/core/TxInfo.spec.ts | 4 +- src/core/TxInfo.ts | 4 +- src/core/auth/Account.ts | 78 +- src/core/auth/BaseAccount.spec.ts | 16 +- src/core/auth/BaseAccount.ts | 33 +- src/core/auth/BaseVestingAccount.ts | 43 +- .../auth/ContinuousVestingAccount.spec.ts | 57 + src/core/auth/ContinuousVestingAccount.ts | 172 + src/core/auth/DelayedVestingAccount.spec.ts | 55 + src/core/auth/DelayedVestingAccount.ts | 152 + src/core/auth/LazyGradedVestingAccount.ts | 38 +- src/core/auth/PeriodicVestingAccount.spec.ts | 107 + src/core/auth/PeriodicVestingAccount.ts | 247 + src/core/auth/index.ts | 15 +- .../authz/authorizations/Authorization.ts | 67 +- .../authorizations/GenericAuthorization.ts | 32 +- .../authz/authorizations/SendAuthorization.ts | 38 +- .../authorizations/StakeAuthorization.ts | 74 +- src/core/authz/msgs/MsgExecAuthorized.spec.ts | 2 +- src/core/authz/msgs/MsgExecAuthorized.ts | 48 +- .../authz/msgs/MsgGrantAuthorization.spec.ts | 2 +- src/core/authz/msgs/MsgGrantAuthorization.ts | 45 +- .../authz/msgs/MsgRevokeAuthorization.spec.ts | 2 +- src/core/authz/msgs/MsgRevokeAuthorization.ts | 40 +- src/core/bank/msgs/MsgMultiSend.spec.ts | 212 +- src/core/bank/msgs/MsgMultiSend.ts | 70 +- src/core/bank/msgs/MsgSend.spec.ts | 2 +- src/core/bank/msgs/MsgSend.ts | 31 +- src/core/bech32.spec.ts | 7 + src/core/bech32.ts | 6 +- src/core/crisis/MsgVerifyInvariant.spec.ts | 19 +- src/core/crisis/MsgVerifyInvariant.ts | 30 +- .../msgs/MsgFundCommunityPool.spec.ts | 105 + .../distribution/msgs/MsgFundCommunityPool.ts | 36 +- .../msgs/MsgSetWithdrawAddress.spec.ts | 27 +- .../msgs/MsgSetWithdrawAddress.ts | 36 +- .../msgs/MsgWithdrawDelegatorReward.spec.ts | 29 +- .../msgs/MsgWithdrawDelegatorReward.ts | 39 +- .../MsgWithdrawValidatorCommission.spec.ts | 26 +- .../msgs/MsgWithdrawValidatorCommission.ts | 39 +- .../CommunityPoolSpendProposal.spec.ts | 86 + .../proposals/CommunityPoolSpendProposal.ts | 41 +- .../allowances/AllowedMsgAllowance.ts | 45 +- .../allowances/BasicAllowance.spec.ts | 14 +- .../feegrant/allowances/BasicAllowance.ts | 36 +- .../feegrant/allowances/PeriodicAllowance.ts | 41 +- src/core/feegrant/allowances/index.ts | 35 +- src/core/feegrant/msgs/MsgGrantAllowance.ts | 48 +- src/core/feegrant/msgs/MsgRevokeAllowance.ts | 44 +- src/core/gov/Proposal.ts | 200 +- src/core/gov/Vote.ts | 36 +- src/core/gov/msgs/MsgDeposit.data.json | 4037 +-- src/core/gov/msgs/MsgDeposit.data.v2.json | 2139 ++ src/core/gov/msgs/MsgDeposit.spec.ts | 18 +- src/core/gov/msgs/MsgDeposit.ts | 29 +- .../gov/msgs/MsgSubmitProposal.data.v2.json | 20678 ++++++++++++++++ src/core/gov/msgs/MsgSubmitProposal.spec.ts | 17 +- src/core/gov/msgs/MsgSubmitProposal.ts | 48 +- src/core/gov/msgs/MsgVote.ts | 27 +- src/core/gov/msgs/MsgVoteWeighted.ts | 36 +- src/core/gov/proposals/TextProposal.ts | 35 +- src/core/ibc/applications/fee/Fee.ts | 101 + .../applications/fee/IdentifiedPacketFee.ts | 88 + src/core/ibc/applications/fee/Metadata.ts | 83 + src/core/ibc/applications/fee/PacketFee.ts | 97 + src/core/ibc/applications/fee/index.ts | 7 + .../applications/fee/msgs/MsgPayPacketFee.ts | 142 + .../fee/msgs/MsgPayPacketFeeAsync.ts | 123 + .../fee/msgs/MsgRegisterCounterpartAddress.ts | 133 + .../interchain-account/Account.ts | 86 + .../interchain-account/Metadata.ts | 119 + .../interchain-account/controller/Params.ts | 68 + .../interchain-account/host/Params.ts | 73 + .../applications/interchain-account/index.ts | 5 + src/core/ibc/applications/transfer/index.ts | 11 + .../applications/transfer/v1/DenomTrace.ts | 79 + .../transfer/v1/msgs/MsgTransfer.spec.ts | 96 + .../transfer/v1/msgs/MsgTransfer.ts | 242 + .../transfer/v2/FungibleTokenPacketData.ts | 102 + src/core/ibc/core/channel/PacketId.ts | 94 + .../msgs/channel/MsgChannelCloseConfirm.ts | 26 +- .../ibc/msgs/channel/MsgChannelCloseInit.ts | 28 +- .../ibc/msgs/channel/MsgChannelOpenAck.ts | 30 +- .../ibc/msgs/channel/MsgChannelOpenConfirm.ts | 26 +- .../ibc/msgs/channel/MsgChannelOpenInit.ts | 30 +- .../ibc/msgs/channel/MsgChannelOpenTry.ts | 30 +- .../msgs/channel/MsgRecvAcknowledgement.ts | 30 +- src/core/ibc/msgs/channel/MsgRecvPacket.ts | 27 +- src/core/ibc/msgs/channel/MsgTimeout.ts | 24 +- src/core/ibc/msgs/channel/MsgTimeoutClose.ts | 30 +- src/core/ibc/msgs/client/MsgCreateClient.ts | 30 +- .../ibc/msgs/client/MsgSubmitMisbehaviour.ts | 26 +- src/core/ibc/msgs/client/MsgUpdateClient.ts | 27 +- src/core/ibc/msgs/client/MsgUpgradeClient.ts | 30 +- .../msgs/connection/MsgConnectionOpenAck.ts | 26 +- .../connection/MsgConnectionOpenConfirm.ts | 29 +- .../msgs/connection/MsgConnectionOpenInit.ts | 26 +- .../msgs/connection/MsgConnectionOpenTry.ts | 26 +- .../ibc/proposals/ClientUpdateProposal.ts | 27 +- src/core/index.ts | 6 +- src/core/market/msgs/MsgSwap.spec.ts | 4 +- src/core/market/msgs/MsgSwap.ts | 44 +- src/core/market/msgs/MsgSwapSend.data.json | 5031 ++-- src/core/market/msgs/MsgSwapSend.spec.ts | 15 + src/core/market/msgs/MsgSwapSend.ts | 53 +- .../oracle/AggregateExchangeRatePrevote.ts | 2 +- src/core/oracle/AggregateExchangeRateVote.ts | 2 +- .../msgs/MsgAggregateExchangeRatePrevote.ts | 58 +- .../msgs/MsgAggregateExchangeRateVote.ts | 52 +- .../msgs/MsgDelegateFeedConsent.spec.ts | 4 +- .../oracle/msgs/MsgDelegateFeedConsent.ts | 53 +- src/core/params/ParamChange.ts | 2 +- .../proposals/ParameterChangeProposal.spec.ts | 210 +- .../proposals/ParameterChangeProposal.ts | 42 +- src/core/slashing/msgs/MsgUnjail.spec.ts | 13 +- src/core/slashing/msgs/MsgUnjail.ts | 27 +- .../staking/msgs/MsgBeginRedelegate.spec.ts | 47 +- src/core/staking/msgs/MsgBeginRedelegate.ts | 41 +- .../staking/msgs/MsgCreateValidator.spec.ts | 62 +- src/core/staking/msgs/MsgCreateValidator.ts | 40 +- src/core/staking/msgs/MsgDelegate.spec.ts | 39 +- src/core/staking/msgs/MsgDelegate.ts | 30 +- .../staking/msgs/MsgEditValidator.spec.ts | 4 +- src/core/staking/msgs/MsgEditValidator.ts | 40 +- src/core/staking/msgs/MsgUndelegate.spec.ts | 39 +- src/core/staking/msgs/MsgUndelegate.ts | 35 +- src/core/treasury/PolicyConstraints.ts | 2 +- .../CancelSoftwareUpgradeProposal.spec.ts | 18 +- .../CancelSoftwareUpgradeProposal.ts | 41 +- .../proposals/SoftwareUpgradeProposal.spec.ts | 31 +- .../proposals/SoftwareUpgradeProposal.ts | 38 +- src/core/wasm/AbsoluteTxPosition.ts | 76 + src/core/wasm/AccessConfig.ts | 79 + src/core/wasm/AccessConfigUpdate.ts | 80 + src/core/wasm/AccessTypeParam.ts | 69 + src/core/wasm/HistoryEntry.ts | 105 + src/core/wasm/index.ts | 5 + src/core/wasm/msgs/MsgClearContractAdmin.ts | 170 +- src/core/wasm/msgs/MsgExecuteContract.spec.ts | 85 +- src/core/wasm/msgs/MsgExecuteContract.ts | 240 +- .../wasm/msgs/MsgInstantiateContract.spec.ts | 60 +- src/core/wasm/msgs/MsgInstantiateContract.ts | 280 +- src/core/wasm/msgs/MsgMigrateCode.ts | 61 +- src/core/wasm/msgs/MsgMigrateContract.spec.ts | 51 +- src/core/wasm/msgs/MsgMigrateContract.ts | 237 +- src/core/wasm/msgs/MsgStoreCode.ts | 209 +- src/core/wasm/msgs/MsgUpdateContractAdmin.ts | 186 +- src/core/wasm/proposals/ClearAdminProposal.ts | 147 + .../wasm/proposals/ExecuteContractProposal.ts | 193 + .../proposals/InstantiateContractProposal.ts | 241 + .../wasm/proposals/MigrateContractProposal.ts | 176 + src/core/wasm/proposals/PinCodesProposal.ts | 152 + src/core/wasm/proposals/StoreCodeProposal.ts | 209 + .../wasm/proposals/SudoContractProposal.ts | 152 + src/core/wasm/proposals/UnpinCodesProposal.ts | 155 + .../wasm/proposals/UpdateAdminProposal.ts | 153 + .../UpdateInstantiateConfigProposal.ts | 159 + src/core/wasm/proposals/index.ts | 10 + src/key/Key.ts | 32 +- src/key/MnemonicKey.spec.ts | 10 +- src/key/RawKey.spec.ts | 2 +- src/key/index.ts | 1 - src/util/contract.ts | 40 +- src/util/json.ts | 14 +- 216 files changed, 38285 insertions(+), 6299 deletions(-) create mode 100644 integration-tests/contract.wasm.7 create mode 100644 integration-tests/contract.wasm.8 create mode 100644 src/core/auth/ContinuousVestingAccount.spec.ts create mode 100644 src/core/auth/ContinuousVestingAccount.ts create mode 100644 src/core/auth/DelayedVestingAccount.spec.ts create mode 100644 src/core/auth/DelayedVestingAccount.ts create mode 100644 src/core/auth/PeriodicVestingAccount.spec.ts create mode 100644 src/core/auth/PeriodicVestingAccount.ts create mode 100644 src/core/distribution/msgs/MsgFundCommunityPool.spec.ts create mode 100644 src/core/distribution/proposals/CommunityPoolSpendProposal.spec.ts create mode 100644 src/core/gov/msgs/MsgDeposit.data.v2.json create mode 100644 src/core/gov/msgs/MsgSubmitProposal.data.v2.json create mode 100644 src/core/ibc/applications/fee/Fee.ts create mode 100644 src/core/ibc/applications/fee/IdentifiedPacketFee.ts create mode 100644 src/core/ibc/applications/fee/Metadata.ts create mode 100644 src/core/ibc/applications/fee/PacketFee.ts create mode 100644 src/core/ibc/applications/fee/index.ts create mode 100644 src/core/ibc/applications/fee/msgs/MsgPayPacketFee.ts create mode 100644 src/core/ibc/applications/fee/msgs/MsgPayPacketFeeAsync.ts create mode 100644 src/core/ibc/applications/fee/msgs/MsgRegisterCounterpartAddress.ts create mode 100644 src/core/ibc/applications/interchain-account/Account.ts create mode 100644 src/core/ibc/applications/interchain-account/Metadata.ts create mode 100644 src/core/ibc/applications/interchain-account/controller/Params.ts create mode 100644 src/core/ibc/applications/interchain-account/host/Params.ts create mode 100644 src/core/ibc/applications/interchain-account/index.ts create mode 100644 src/core/ibc/applications/transfer/index.ts create mode 100644 src/core/ibc/applications/transfer/v1/DenomTrace.ts create mode 100644 src/core/ibc/applications/transfer/v1/msgs/MsgTransfer.spec.ts create mode 100644 src/core/ibc/applications/transfer/v1/msgs/MsgTransfer.ts create mode 100644 src/core/ibc/applications/transfer/v2/FungibleTokenPacketData.ts create mode 100644 src/core/ibc/core/channel/PacketId.ts create mode 100644 src/core/market/msgs/MsgSwapSend.spec.ts create mode 100644 src/core/wasm/AbsoluteTxPosition.ts create mode 100644 src/core/wasm/AccessConfig.ts create mode 100644 src/core/wasm/AccessConfigUpdate.ts create mode 100644 src/core/wasm/AccessTypeParam.ts create mode 100644 src/core/wasm/HistoryEntry.ts create mode 100644 src/core/wasm/index.ts create mode 100644 src/core/wasm/proposals/ClearAdminProposal.ts create mode 100644 src/core/wasm/proposals/ExecuteContractProposal.ts create mode 100644 src/core/wasm/proposals/InstantiateContractProposal.ts create mode 100644 src/core/wasm/proposals/MigrateContractProposal.ts create mode 100644 src/core/wasm/proposals/PinCodesProposal.ts create mode 100644 src/core/wasm/proposals/StoreCodeProposal.ts create mode 100644 src/core/wasm/proposals/SudoContractProposal.ts create mode 100644 src/core/wasm/proposals/UnpinCodesProposal.ts create mode 100644 src/core/wasm/proposals/UpdateAdminProposal.ts create mode 100644 src/core/wasm/proposals/UpdateInstantiateConfigProposal.ts create mode 100644 src/core/wasm/proposals/index.ts 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 0000000000000000000000000000000000000000..4ec50a5a8044514b9d2f906b1a9ae2f28ddaa231 GIT binary patch literal 132367 zcmeFa54>I1Ro{93+<))gcb~5QTDFwr+#5ljie9WRj-?m_I5k#z0N*`7V=9{o*j z&iB~0ev+G06{lP@xaFs*AAS>ibl=S#ySE~HgSXqEDAaV{%`GnoAKz!?{B7>JkN>#4 z&no0gubhkU1y_1#KlkyI{YW;Q@3`}x_N{NbY1fWhZcQ4x>u~o^cHO>vN0RDx!XCck zo%ifWn(^g#z5SLulPuodx#Qm5{%P-)TW{TU(>=G`ar>>e@V!;H+{*aiop;{;cAosx z9Z8}u{oUK%{f=AitjhZD+VS?gzV-E&?|j`&_w3kp`wzUw8(BLl-nHZH^kmmfcfI>< zJ9oS%>8Yma9k+h#>tFx6H;jF=Di*%&mfdf^ZR}C=)*Wwq_doX0bnkxmj$QA$>Fu}O za{Hb1_h|OnEYFv<+eyxUY1+zD{^c#Y%r(eOl4i4+Bv~tMr~0qe&ZaXSbSIike{L_0 z{b{O_Bxfvn&R0pwt^bc&^R&_IwA%SptCdeqO-|;mMoJqU-U9wjYlOG+oc{J(>QHM{ zD@_{Vl?gi2NSoG-dRKbSJq$2e-nuy7la_n;o=CcTlJdY` z*M8f(CtB~=@s4-ydQX;gZ@=?hyKlL3_w6E(Z*T9ocgNe`&DD1{4G~G%x#f;K-uZSt zyl?W>9o5aAmABuyd&jOHxaI9Tgv)o`{?0pZ+LG)|CvUn5QoH4*9e3WEr`?-wx^2fT zcir^1Ti&%J&nA9>ftG3a-77bJ%U`6g9&Y>>>CE4I?fcSw=?|v&r|(Z6NI#J7Pd}Lc zQ2L?t!SsjIZ{7U5W7(w#(*N=L?|6@;)Z{Hy8X z=~L;ir~gO#@6((9=k%)Ae(Ue2e~|v?^!L)|()+W&PCuFbNxCn4?cVGI*@v?q&wep` zDEo=*BiZM(U&tnZ=Y#FfX1@hh?0I!kZr(X;Y)Fc9Hfd~cY%9{4EE(oAS!dWR^0G0{ z?bVGvMP4+^w7;y-lV;KE>LQshH(ik=JX2|z&R?E&x~`Tnk3(*ewEpL`C0B~6S|ZX^qaTKoPIK1 z)fNV5_3OU5vrN7AW|?WUv}+Ai1ODU-p=vs0<4$NK);CCtMp?`kS^r)x`tt?%Gg&dT zpPBxr?RSHK+M$+S-NQza z(QbDAx?xs!3jTlnxPw!3Y*0uW`djr z#jg)DA%T;DRNwv-DW!HO=?v5UqiK<3d$MgvO2o*1M5!cP6E5?Y%f>F`YZT9Le7Z41 zaIcaqZI%bpc~p|*tiBh+QptlULJgIS0&VUdAd9ynM4QNS>KZh-dK!_& z2U8T%F%?ec$k#Hxn@$)e(s7LPsKO{c;FTyI>zGj2G|*Q6Xu5D{jbhS900bCTF+h9%WSL$ zA5pCmqf{X=3Rr4tOJ~`~?VV*)0zi!0q6ZR_#xB-_VY~b*#ypcGmnR8tH0I0qy{|G% zg1~MqsLxCf)hE+qyuLEZ`?{!a&OuUl0P?BJv)lN|FVA)}N`U`f;h}sX!7{nmE}zro zKG73TALe%sm_MldWBX1Z-uH9K%^AIRP{sS8tHb+GBwT{U{$HiNK!OYyVx_s6>@LKX z@XYNn+m2|c5)Yc#`Q<$n#-aJ3-^pb9w2;JpZ(!0y# zn*JwMkD-WnNqdeZ@cdm*Z8BEV(ab(2Eej~(@%?nj4Ne^28+3HQuQJ%)Kgq6!pz zR5sahZmg((C@qrgKG2oVCdVZz;H9$Rb|po>l9qp&$kdz;MXIO&G1YObssqa4)yGnq zb>$Hi&t%8a;RKaSUU=n4V&z#?`KME$p3x?9EH6*G$XdbW8Ncl3_O;g$|AJf)10!vs zTQJ36C0C1HRM^YP2`cZ(gyxoB_x*OldkmlobxOTGWZmh}93|wr%eD2B(0wDOO5tvzies9r>Le_w!Jr9bRhJpX_?2=!(YMdrv)>NzK zW1h)Qrs#v!8VMws@XS;THCuJ9Vi`|VTes+{;>jf{{wXSc*%c*43n5tG?#&m=kK$u+ zxoN&I%1XpOlcKRi-itgCu25ymylm}!(eW!Z)f#__`yu;%E~$o(8Y=G>7@KDUBYYE( znwCS++RCy|0f=1(UM2*_gEh<@6y|zq*QgXb1O$FGd?+HNB%oWcpXmRLf#-BO=m|{E zqz?C|(?L4`Ie^bqbx$aOj@yG4H95_peYcfRZMf@||7?D`kz`qljJU6q7!Tt+o~gt1 zEG_TDnog3r-~GRT+05`SYqj@~Z=zA>mC)!KCo89(iXcZ6WV8|C=pgwx@)1j7L^TL;2wYM*aL3Ix zK_CRoCb!h&03`v$*dAOu|G(APU$UKwZyYwpxc`Pw;fVR)G)SHIv$%+^R;T!S^PRf46t1_m%h0IA*6Xgq}l4P7XPna z@a!Xc*6?SYF}d)u3zZ83_|)v6X7zGL7F4%wYT>=CIDguE9Z*+kMP2p zN1)W+(ZQ->k>z-pW1dxT+*V^aY$+gH`d8vN3Igaw zT#XUG*8~+d9vP1NX8GRv>1LWId4`VN1JAW0;+*H; z#I(f0#;_`1_z%DI*_Me8IPpG}8YiB7|G)daFaO8Ko(-IsK?JS9iTT|K;r!~}Brr*L z5>q9dNvoN)noTB?jY*8-QHwno06Kb8MMr^%)=Xhey3B9%KW=h`@i(c;MjR!5zEP@T zr6?|!+>PXlMN-qgWiJ9i0Dm2En16uSAr`7ANmhREyttv9xUQF)ZVqUeOO2OSni3R8 zWaSO>N9Vqh-alB0FOZu>)c-`P_f+pj9#gedb$!opJ7Zi^VHGLAaxR&hoJ;z@ltG1{ z6|3b2jeTRjcDSm@torv3R~DM;OKkbEYcQrxZFIs)C+8t6p5v&kDq6iPv$Q0$6|LicA*k^3^I(7l<4Hj}-W zBAEC+11((L%RnCDKXi*AQvad?n--H$n%FQXvd3QRUqriNX;&m%${rA-0Vl|R4Ip1F z?X-X#-`ry`BdH!F%Xv!mqTQRAf;i1&VrWiuXVQw)W-`VnlrgU1s(_PK;Kbw!c#7~| zJJ$J{wPQLnn-Xo;g5N>}5T1HU(-tm`#?8MrIQX|GVWcpw&>++l$WjU2uRKYzAQD!2&zr%{}Uy zj1(0O%=1Nex7TrlC@S)Rlm)gVqZ`vAjX~2tI{<3jELZmrK&v&0qoN;MVDAS#FONOy z`3F-CzT8U@?d(s7Q>a@&FdYTB>e(BsP6m_4CbP-=WO}K1&;~X{CgS_BnAz*Yp6mNw z(D&_1-%pEg?AG+X-A=i_$2Bd~0X2HBhU5DFJ%fgttpH8$Wq?POdv(vIEF_&(I0h^X z?Uin5NA{2jdsG^~jS1VAtG0qa@;RaRezC%@B>a6G4VOLr!88Sbm0Z)y%awy^C&1@x z{k==%V}`6hoK5bIQp*a$5QXchkzPG7J2tiUMi6!}Rtj~!vaO(0I}YhMQvDh;P9@i5 zoeFY|vMoP+@mmVlNB)}%0tfzUl&j^3jRTW=l{};10(>K>a8SS8KcwHr<=KHu4CZ)( zIcuO^BbR4lq*A@Hj5#O6;-tGx-r#Z-B5&!Kni~n`slEv|5N)r3XnTcMC%qoI?$${J z67df8YB?bh{c^uozqmjzrrwVOnNVTk<3MI3?m_^FwF8;af@lM8C7U;wJu&HD5@azF zh3fG+W|Q0Hg3KnjIrh6elCTsX#ME>4r+{<>O0pGaIk4M*5CQ7)ZxN@NB}olFay_4)E=KLD$O zc3BerOXkw9T+^ITh{7Zv%+gd*@6$;LjHn_y6(^h4$N8)|FgnF&$B3%RMb1lJ+`x-D z&hX_K^((Me6!{!tU=yVw{CasdV=r}h=`xCW=}IfOjDoFpHN(|aJbH#`EB&T(3cJ0L z5|6rFYj17kts5zOg10Q>mX|m;gxrvUA>M;z^&(t~#p0AV6|!quldGqJ7)}3C&57gFqHe$4nH{ai9>WJXP!nXEh-KUHg9gOei7Z8LrrOcK85C54GK8f>Qwas!YKa>1pj06r*x zTfuuiv7wKc6Q@3cer*K(`m=+6O9lFLY0$?P1p3@SPsaj%7*%{-0ImtE^9Q)GwW01D z09Ut#m9qjI>6w{2Fh&+!s3Y$g}=P>i~d>xO)KB1?10`E8K+ zhQtL>x#zn~mI77{Ns<}iHaBeIRxwLe&{+vm=38X-OyMO|R!@gHJLq#2Wwf}Sy9V-J zhLWzN**5TdWw3Y}vUoO8;1wono^jMbJ$j|0Wa#*L9({8@%(o2N^@At39Z! zfkv>|MEQP4OsiPIc+?jrNVuBNiVa*a z_+WtGWV|UMWxg2p%wFS4zy3jr7^ksJlhB!I+U9lw-_6~y|8jy)4AABeMqTuYzrXP= zF#xyLV7&=vx>ZC({c6m9n)EUlcm-FOYpXOQr!qGqjf6DycTI1Km`QtTN;sALj4>WW zWQduF)}|~ji761{CRJe|KtU_UPEMpg>GgOjq|Ri=g)x4?9Oj0mtlg|vY#=jIR`t#m zl83~&;$25GbXl5&8NgN<=uNW`T}YdG2Q9S;)NG|_14zQB9J-^)KXK34u4Bd9gy zP*vL_$SY=X0uRNC8V1%7mju>;O9D08m~0@^Q_BK#01c0sLN{UNnb!abH5f=npTk|! zIMyVe;qlsw_CgJI7LSUstFc?pKW`0IC_-HWMo)pVYAgXp=Q$Q92*>K!I82COCRT)U zv&5?h18ukvniShB$iavr{g7k(UuRAQY zg6B({YNq^6gG}Oe4Ta0g&fp?`8&R-U#BGZeQmk#P*J2H{lnmBjyp?UjGeD>BQXX@& zYVO+5oB}wC@XsdK4bZ_pSA*5gywA!I+u4{MP6z8Wl0))+BEm3_C<4z-7g?)ckA`F> z0D50vtkYb;P$Ze2RZ21WnAplG{l;nQg;Hw0O)5+l>zPz|1R$=XRyh<+(9bGh)n2=` zwdCQEWSYGOZCZB*6MP+ptNF(W`E4~&5C{eoWi=b!RA@MW5C5tk@G7r+GqQXp+d7<< z=FPY-O9tzNKK|d~|7#-}7imV*c*D#!qs^N_e-l-_ z+H{fK(v;Sqpqi!~#W+3ck6ND5u$)3Sn$)n>9_!*HG(;|qsP$s5$!4;e1Ov@u5{$VN z#jTe~PgvYqJkk$A?-32~QH|HF5>s5`AJ0Hg#d2HUUml{K<^A=6x-Qc1k+fMX?}FIk zqWK|9URVqco)Q0-*b0&qeOIiMtY=Nt(PHhI5kHV%o;8OCQD4{ZzH*SMc?48MhOHd|+VF@JNFV-4MS@zSUIBeAK=+utuh5xI zE{?jx3Idu0z3C8h2kKN}fSb@Svd{DdfU^*6lzm;Oe?o>lYNbij)3R`yPymsKphdbS z+>^L+1Q%4;ZT6)hno)1ieaE?#x+xKt&Q*&>+SmqBZ#31=gjd~w9ctC~AaboCa=j5+ zTjNu9Pudt=iauFM2?ls7XoHg`O=hyE6vwR;$h2z$jT#|jkU1A!hM7aC?vemJoBsoN z%Vcxa1}hf>>VH$!-2jF)W*(QZyU|!xZFE~4lV!#EwHcBhQs&n4xw?&O$p!*g4? z<~8}kAZ7$&RNRosm<_p%*|_6L83pK$h9*Z`vSw)UR}^xIu<>Cxx=mO3kQWSCMEP}f z3Rmm|Wpc?L*Dt=vaj0{oR9U^+e}#P=X^77r^BOni$J3#U#YS;4k%^&8+O?9AEs5LC z98%xxRyjo05>}VBM3|A5Y=Y%6oVBiZZ7DR_yx>`c0-ZU=sC??fIik|JfL)OVURhF} zAa4CLhqcX^1Z1I03^;Ca)M*UPaiuCB&v2Qb62RYt7_gcz=rU%ca}WD(QcDX=r3Fw; zI&`G!q>N<3pgbLn;ThoTuy(AikuQEQ%>(R{mC{-8w@7bU{aQMUazomolS!v8FWbu>Pxu>^aEF@6>(_tc`;~tMq zWK5jLM8;F+H<9r-GK4s-x-(vbcdJ&3Zw;k*NPN*SGC#Dq zpnc4K(01Gp+5shcW3(T1?#sXS>p%6AU;52o_|s$ys0kIQDrYF$^i(v$Zaa-)Y}aQs zkovCAP)W7xvtfV{n#KQ97WT=tK`3IH-(o zI8dLY$#cma^Me)ichfwoskPnuaMCc#wxEb)1UyqJUfLp{50VtYo_4yL_Kh?mXeu`R z>4_0E7ZHEc_I}*+$SIHi4s1dEemN@`u(*{B3KOSMjvZ`JV*pE2WmG`Q~}vO9YI-r9ySY&$D!zZ zwtXmW%0#S&?$EFW@C*dab9`i6xa3FGhHU(liUDI|gd}Pkve{HUwjn#zmydO#!h>(Y zUeNi4(6sJn+x%bA7)kG{OzXG+h%NZd5@_)y$Leyt8f*<=<%u6ejyEL7mlfwg6&}O+ z;lhM>y`|XgOpe~IvEz-Dya_g?V{)eaU!_jk{m-R!;$U%jU_k9i9(7MkPfpuz8DzTH z?TSRw$@$QH@u;PaAS(V`Bka-mZQ80=qrLN}J}5h?;rre5{ppweeTb-H6|cC^I*@nz zM2s`bK>LSNc?LejynIxU>s}b-^tq};0>dm%63dc0q%g{^uob=Nih-KMDP$bzC9auG zgZdV3MjtYd9(CbUR48S*oc9(~5oK6ai?N}$h7Ada7*)>?iOMI1ecVHNOBu3ZfLOya zdxPuH1(scYn9UrOX){6D?G3$~v}lDsr0~^3Q*B;peLRJU)*kNDMJ(Hjh{a1VYE~AF4H_^h;UQQUGo>D%B`A!ZsA}ydEDd|`l6z;bM)RL%HI16u^?2v zJSHK%)~uA2bWhYg?CrtT3C8(p+;s&B&d=ieE7P`m7ne$NTA7w1@b}nQI6zi@zTaZ2 zUk!ObAuP5$?yxj@XV}h>#Ls^ei|p2*>GN99VKFH)hct2veaIGMF>PMK)YrN>Q0Q|7 zbF6^l4wSlZe!+<2OsYHpFNLI@LN(_E_eo0Vmy@x^EL1$J08wymJ>^PlP6JWZ1Yq!M`m#O zH21-R4V@q)Uvp_M%$tM|nU~Uhk2~nHTWd74B*we$mG7^6;=h+d{y#l z%5=oN?tPvV36z$t0)yZn9naS=EWF-Avd;M_D_tRrVQW!X_!-E;DETZQ z`BP}O653H**i=u53u|UUBn5_vN|3+H;=-+REn(qFwx=>BI*R;OEes|I0&5F0q4UnL zgEF?5tD+Wdvf?Oep(jmc*-~^pL@g}E7LPTf5gD(&L2`(18Dn2(7Ypus=nER+E zOgu^(CS3e+ZMwwgTqs^RU6T2{i_e;P9dvXNtCR~Oy~YwL>!G!L0(uE^HapAQ^>l-9 zXf07@HD&Vb|MD9jYAN}ZMu6dGlWBZz^;sttPP^!h+CW02H+&hROG;ff3M}PSU`d#2 zk#;kv1xE(W0?Ox7vwvr@XKfdi@18P5>iJUBa5bmTVpx)n>YdxEZigSL z*=$?wlkBQ3`DXQIo2{m?88+r~;RWR*>lb{$;w2WEjnTt~ExE<73jc^jveZESIsJs0 zNYn-JS8=lto6#m-*P@w75&LsSa;Bk%gw7H%A~xP|rA<86woDZ(*@jXk-pNfUuG&DD zqujy@|BTK{D49TTDF!dq-@{hdj?E~(x=YMBLhI_6D<2r5{<&s3M#{&GFrP!)JO19i zN`dAAq_JzsMs6Inf$dap!~;mlFY=KDUw=?~axiQP+x7aVZQs)u zcfF?dtiE^#%IXWpYA_N3%IOwF0OS)~mmu{`D^^lJt!4E+?|Md}B-CTWVou09UW7DktkA$ztbx@PU2fX8(_JKd!we(N2li9|p)koz`PkUyW8_>`-1CaGX_= zsG=C?FjHk1;}S*g3xp*CjMIi=2_WGPmJIvav<9f`>>i(m5&BO3@S_|X_-LH=d}K7iPnu*ByR!70B5N~KxGwhZB0Xfcs}Ec@Q}## zLsEPyS! zp2=8&%3}0OY}p_$S(`p&dsADr*Q?`asYJ_}*x}1|rv{wQwkW;n-v_48W#UB z&%aTN94*nNX)fa~X=`g%q`$b?m(!^0!^C$(*Bcjd49qNC5SUFZ`X)37wWxFH7bLjA zx-e+lfWPo{+h)gVmv5MDc3Sq}h)?3qIwLdbua~*AZi+8~B|9H~HtmjXelqPIpGte$ zxu~7hx$U?!CVz&-X-Ejv=G5{Qy&3%zZEUug$8rS}Kc{{3X+*31-tv5 zA)b_$A0FLkNBG=__wL<$DD&lJFkm1KzS8<5Phy4HCkin0!1n>ph*P)i^j(0Y76|MA zSst!zo3f9Ujcb%_Qzd%eRxD!?+RZ^&fXwlz0b8=S0a-s}-JVhku((*M1F#m`wfzoS z?v7o|(p1Z{LK_#OwaRvE=)bP;@tpStNw~`qoZGRt@qiJy((?Vk`KLO-@XTsw4G z%8UQ31-avO`9{18_%X0oxcxGj`qN5p@Z*bu(k0W zt8u(K4Le|5wL^7|%XU~0ecQ03Rn4|^f47h5t`XuoPCyW$n`0uOK!MtK<}osTr6d4j zC>Krm$B}lhNc!L8Fk*R}N75LS?ZrJ89V=HN5jygaTJX_6Q9r_{&Z{4yz_tq*N1?9< zC(UxT8h`QNGa6?8BErkI@$Gil+(l5xux)Sy+cKwWBjM9x5(b9(%sPc=Y!Ug54s8_R zOm?e7`)054tlmb9bADkX@a+q}FQ8M>F6v+v#jgR;rLk2*`>#(ZwN9QK*8@9C}uxLMmd-ke#YwFOubkbU7oGls&l{4G~ z;o7II?SeF z8I*ob!$hO{o#(U{eks6kCczlOzi?5}kZiEG<+(}JI;8Q(u<1e19Xu2l6Y>Ds<{NKN za&@jCCg}Z&R5MC=Y_q-I5F+t3(aasCK2Os-iXTA;79Ks)~_f zU!$tmbP$iNHPhJ7ycVVrW1>Ap{dxH}*clLJKG#6WqkA(z6?P29v z%Ut%54c!{>0SA}e*238#2GM0Vl$)vpclb?ICy%0`JoZqZmP}J5`4KRX@8zjcf~2BT zLSQs|h39oFb(bKI{6+~nvJ~;T1U6QeyiB7rud&`FnPP5Ki!O(y`D520%i4?ijaz72 z^or}M)EsnqCVQiPm6cQ>C=R5cNh=K2<81 zxEvNp@@t0^YM8-K5a&`eeZs!{Y}J&o%;5&+C-VnNq7h5D+3b&1KBLM}2m#uI7Nf{T z%V`;`cSf>dsI@ML+EvTj3`tLISRu<0orM}r9>y#KNHF?0$^g<)>rpuRsWmucBr7o` z@Jpj3Y8IV)0)pivE22$LJsciF>d{FS4FtxrK!+I1*s2~2JMVfd7FMrEE^~tDvkuT_ zLQiV3Vys4BEEO8v1F?i)gc&q}vGjHM$q{2&{n*>aSXO@+AOrPS*utQDD7UD94>&NE z9snRU8e(B~P>CwVG=4;;952W$tXy>1dhBE&7!?(WW`Hwn{U=B^goS_xn0F64ao4Kp zj`YX{{Q0aqI_==b?$4yY=ZO=`Q0a&@xs5~pDOq_dMZIa>^#!YGh$1ONU#9#s>v?nx zC@Dz|`UT?cA5>xz|H5?b=so*zEst=tnDQ<7irmNCE42+3a;0=P+T|Q-QayI;)~M(2 z&$`Re*#Z`S2*&h3k#!&MrY-G4Qn7eJPq3Ec6KEhQMGD*4-i{W!wt3G;^LM>k2A6g_?JF-|+tiR%8i+fGT)x+ynvfA* zMnWb7D}0}qH$$M9bn3?X0TxKg1M9b$b==xcM&KjINzXyQHEi+k;n$>LDpbQZN^PIS zo{SBH4mGTFGw~mfEM!I&e=VTb?&3i-N5q)jnB@%Z-KlS*CXcV)a+)zef2rD5>&gQw%!qW;V6(L*L!71%R zzE7zvAQcbD3FakQM-VIg8`xDgsf$v`kA19s48!_p-Qks`&Hy12WvMa_5hQp~f&DZW z%ZkOEW!Y@%;0P?Mhe0414Q5{3hz2Eekh`{{SbZ{cbW5%VS4mvS>cvR4MS(h?9 zNPEEQgZLP+?O0Yf%_`~UtUCIW3=I^eOa0em`t)RnBUL*{nq~_}yjER%RGsZQuRUsw z9_b{K`d7`-qo!Q*+E>yVMup@)VAnV>u034bd7ef%!hwNUU`E{03;9$OZ3F=GIp3al ztLf-dhqu)4Ill%W2KX~nzH(aOZGd9{kDC#K&94i>Zo_xCS>XC zXVNO?D3+zdP1xh#L-aa?zTsE;t_N0vJs^%Xt~FN)M+(YFEqAC28dx={4kraKYI07L z36?av{@+)6P~W>WAcjG(%M3Sb!YJ4R6EwtGLclv_W5iEUXt(=Ym>nL5a@b}xEccu` zmpF+PX;$Q99>8XYV8}smbZ+f^!=}P4+e-qsgiaojG3XfxGSR#p&MGun_ERI5wRgC| zD&+HmNSf*lcVr+Cdc;ADRMscu+<6Sd=1S<7eJx4`oxbGXlZX}e{co@$%J<(R;c17Xtgd6Rx zC-nh`+Lfnx?eP8+8UVBOV@bIE1jYqty;(qCXB--|#m=}mAuIDL2LwJkL8@PBc$VOk zfXledc!{rwDMFw8Q=lz`49O%UXWh%=Uk@BYu0C;N$$e!{vBbmXZgR~c*n$sb>wzCQ zhB?^biDqtudUHBM6ceFilQ#VVgquTs0apz1~)k=&iM2ZDMBzMElUVY;Z`EOu)u#< zi(?)ob0enpU6L9^1#?G=UomD|a%O}KfmlE^!w_&#d|Yq=`>+uPRzz^6RCd% zdv$LHzuWTQWHyr@kgeC0K^Ff~jjWYKaG5E*UaSw-s?(yjN8g<>Q|KC((hb(lQ{-Z~#Z zi2<%aI8dk9*69?A)piKy5-C^u^Mv}I^9&3v!%lw#sAX!*#2h+Ka~e5v&LYnUV4Y>)%p=*S6`A&i*3%*!15xXQ z3SCNco5E9AH~tf`Z*}R-)s@3sb`FMzjy<&92|j+7Eh;`PP>^2ja;@DIux{fW`phbH zE{J*cznNe4x6N{_ob|LEIoC*=G?UY$CBf6`!Z8LV%2XMGl1uD6c5)7NS^0S{KH0Yq#*^*~o zW50^hgI-GZ>r%5gmTw!YPE_=tu!+Ko#%B3NZalYMejkHRdNCQ>X2tW!d0fZ>TZ1f<6u;R_(Ss|n) zyLSM8nPv?}gU?%J68agR@sZ{%0v?Ouq_R*d)ZtyTaWj`8hNUl)e#N(eB^L=o-qRzs zX;TTyx`r>!VjDv2LQ}fs`f?w<+kb&4KQU3~L!X9Rf)5);*Aqyz5g+;t&?IFeJ_N88 zfEYVB4f>{(S5pzXop1-C`^=Yt#3z<) z#fo8<*-znJ6H9?heOBq4DG--x%4fu-KAJGXfLx7c#HH$GG$35cYmkJNNc+)^twJN|vJn($tEBtB!JzwF+qbZr| zA?BEX4RrBt>>duSnI9xMN`aEvjDkd=B56KtnP6lLFnKhikP=xHn|XLD*={wN{I%e$ zktGB%Stp2zAR|Tu(Ugs&4UShz)XQK&I;S>x9Ip*ksX8CNbXe;XuD8kdWO+sQ|Ja8@9hFGA9_)oL{H?XqE zChgj;N}HlAvWy!rjZXelV7K=arrfePjPQ-E1h6<`%m!ZMIpGNUffWVbSC zF)D&vO0-pD)Rya_mXzp+VANw;MZ;)u?_kthsV)FKsAlA$V5{?Kiqho}06>@t0JWtS zX?-0At4TflEFVOM3w5BMfo3KoY!6>;yMD70Ap1lxpkc3Q;xfLJs4(%( zMEW+$upv?m5k`F306Uf6O?1r72l}k_6q4;Q6WC1+N>%{365FW?4Dgf~|4O?X*!f$n zLol#YP%T3+s8aw2BJ62dAf!7YG5&^S3ITwHj_om$)38R7B@K@IDL#Ez4>JIre%J1^*QI;{(VoMu%+ha?GRdGn~5Z5XnWglmVEfsd&2}>#?NlKT4x!PR**hIgv zpi)5tt{@5x{aWrpD`G=Of(_EL$T=!t*@%l<11{bgaM7v|iav0U1sd3x7dr5zB|}L| zd7M-nhPNV}!EHs_AkB@eNc~oT9;^7n3aDwcPy?-Jcoll|)QK1~G7-Ngh*ZdBm1~|R z5}htcbGYUqTswv4keadKLT#FM9;AG|Nb}g9s;GJ5)ZDn{QT&$*72k;SBSlh8DO;#l z;#G3K(ol3JXueUuGBlbxL{~AoMiY$cb%;g?jvkjX2%b~7MXo+6Z|4~^iS`L-^zu%kWN~G;;I0a#798frCUz%yFY4akFs!l7 zFAUZS-)Pl#`M86Kn3GD_P*OhTC3Zx^vCI#=eKaFax)F#Vb}${<^6x{b?@7UAv1f$r z*@cohDQlTFz9Mm6qMS_bbNdE6xK9v;(iHGynR5K}AUc4Qv(&zM0OjcQ%lLXo%VI3)YBBm#d0&(9C&%^bZ}RW2xF6 z%5H~!Doot5PsI)}tnX7%SBd!@w%sq`6!^k>qGk&lr;Txd(+DlE_E=TyK-?yvgQT1% zp1=-qOGqS6_Ir537RVPD6U<@CZ-vsedmpnnK_W4xT^kK%CM-B^8+8N^^YZc~bP)Tv#ULBL)dy3~>w$C(FND`a#yu$>9nza)@DjV4&5j21ms0Ozbg z+Y+M#sd*Rlj9L*2IJLUa?6{3u??{xyn(|}0UQjpB7`S<%{+JW5*?jKbIzA*Dv=vGX z5p)Q%E(X5E-C|@`FIL^CNxG!{>>@%Nn!i)M0dYuNi+-Mm?R3&bd5qM-Uwr?Gqy&qm zk)%mbP)8(l{;Sc#oRm;3_h_`ACZ_|{C*1^|k_ntih9ZPK_+qBBB01xxDs)y0zHlJ7 z&iJt-7^W~U#$G&`VF5w&9z9FzfW6bX77~GbDj0CEYwI)J_d>7 z_RdqTjwq2SajLq53+*{MI7|p9CN7?>?!-mLm42qRYYfefkPypkKRSZoWqA&6cF=cn zC-F~;QGwh@t!Av=z~-dDR|XkaBmm{oRBwPe8o>}#rB}K9I09zOE>xin?vNyNb%!0w zbL^W~qRu~x0Fq5SM?H@Th}G&3iA~+h5=NfnB?J&G<>zHR2TK{lH(1i=X(=P%+)VhYqFJI&yBOBqv@sV6&gMV;zjig*)y0PVHLNZdWByEX9+eqfKN-?`bV z7GJ5)Wa~Pf+<$PZZ&(RY;4*|hB`75vrE8!Zk*tYCXsZ7sdPaS-{G78t2KSmloL3PMZ~yYb#5)RySI`p!6IRRrR;aY_cpdl5TqVdJ!s(xGqbGT3tlAMAM* zen@zEfgjz%hG!+o|2K$k@af78mJkYV@RM8yH~48TgBxtJ$Ba5$w3+Ng%@3|@%{`KV z$Ft}WA24x*V5>y)ek(ayD}lj)1cEERqbg3o=Vzc;@%iB~K0oAqenvcfN>4Dl9&>?u z%DmtpTy=dy&mV#;VM+Kw9`Qb7k$uu7d%5H}q>OY>F>Dc8eJ^ec9Zce%XMrsqu|B+veW}&@->O=eK z()PR>l*}&<*myGd#V7HLg%u3?U_%S`Bd=I+A9=-s`IuMyw-nx5>>=356Gma{vgf|B zPB95F2lI_jWb!ca1v2e&7pislbnuN&2j5tsAbS{`w0qrEtjK$tqz%U_qaiJ615(6R z!%gCGF?AKKW@_)hK`)+>M~0I+&2zG_d)4MjLoa?yB0yf1kBuc3KQWcO4`ef-OKkd0 zZuU&}VoJ-Mdj=h=Z8rJy6yfBpw!)_PGkV3Br@>Hu{@#mP8C(0%)?Kv181G_?1Gr;0 zxtq6A`PnENOf&6EGWRqlB&ZTqn8)4nm;m8~7Uyr`U#(IPw<@QCD!Y(r2+t1zn0E0M<0n$$@_;a-kp$LZmVgLIC@-0Vdx} zwl8yn*bB^@Fg!G11P83zR>KIA&~4j70GcbayQCoxl8i%j52cp@X{Wz?b z#*BDmQ1kW=!RQn2?H?L>`;|eO#H+DCDojR ze95JHWgQ<2qAB7OJ9jPBMHUiPI52s{LKKAYh@7&(La>gp5Udkq>L3+7MaFJrvl=E1 zD~>V!f^9cCKoK6)A(I}qvv@`}lD#373?>Zq+u^4seD%7;k)U>ZV$r9)#x-u%BTp*8 z?US^wK43!GupRnq# z07vdKPNpo-DsqK(i&c<|ahj%4kCtRFAl7QZF&zewXvblyow*3kx^O25AgA8@q;go z#Sc!%>f#HmHVFd>tMXwvq7JZ!xC}u91rF_e9bm(yR<-i(el9~OL170w0vV2_)^-df z5U?m#_}jAms!#$J3p4E@`0%`Xto}Q8==^hp5-d~z58#tuo*k3`CGxOWzXUZDJ18bY zTp@h>oW|nP^Es>0?8I^}U1OTP{~fHw%gdnHY^>O+lsss*hDI-W^H6nXRw*S9S0!3E zaJagQijj^=+0?lx*Bm!5)0ssvg~L2a>M;f8(J83K6tLPUsKpc{vKPh__9B2nPyxkk z#Eef)n^@Jsk;1;G#E)nYx)wzpq}d-wNgZM+@;08}cNA4PAyDJK3N0sf1-OH^aZ+Wn zYAD6v3*N~2dmDHw3%m_R6D*G>$Gwdc3%m`^e6L~)bS=ado>4TRiY+{)yDGNuIH9*T zM{F|%-R}C{qceH*(}GwYG0Ol47wHb^j>)Q^}2=r}zFRxOBX217#= zJ+{G>3NZh4NNt#H)!k9<{5vf2Tq~LNP(oF)rK(3Ett=0<1#p+ocKMoM32o_P-u3fR zE!@ufo@D4DcJbg^UpDP4P(=B*R5~PBVeLs+G)+A=&t(f(OiM~E`;xW9A}x$Pqd7HZ zgm$n$*~A@}M0aV+i9@>seJF>0IyCo45h^Mq-)MOnRwTptnK;kYw|~ zjm~?wX^A27j_i8+^_52=v9XylCHD~(v1l?a|3ZRQcSJV_;DC1#p4A#QX-Nt&f}=DQ zW)<44?u8A%DT7wLQg1wO)a%*40qe$`{CQhg3ulP52w74n!)%#o!sJ4bxI~~4Jz#lv zzHo8Yb&fk3k6^Z$NsBaQ7Us4{W2W~N={T4TC-r+Mi_2`F5IBFd+lVzOsRtNIk1bz7 zD^bGWGYf4{Z>_9G+PH_3S zzrZ&5@`OQYz;<@^*4u-^Y4=#B27zbW^iKuX4f7Bp%SRzH z)<^_AtM>lZ(hdbZfPR7qS6{sjm%v7*heXM0?-C{3$~|V{fT^|eAir!S(sH1<850&$ z)=o_=`=f{0tXODu1>T6)WFfK(`3T?3To}f)%?3!@vq`Ce*`^@tV+erh$(3qZK`t8E zI<)+plzNnl;V86=O9#BmokZic1c6rn6a1@hc@%{;dninI*C8xt-`S!omcKD@AH z7y)QLzw(%B4<1b+%;GQYscEFsL4Kqed*D~dI8Hz zm7~C=^K38#GYnwM)y0??S9sBYnT?GIIPI5K|1*(Vi4vR>OMq43Q)*LGIlS!4O$?=R zKOI|i9s(gU%b46S0aE^$X6HC`Te23Lo!;N9DM~#?Uho%jS_x7F3neIxssyg11aTTm zB&lv@LY4~7DoAPSzknbGSLZ26HS|k46^D$WN1D&{BhA`oq+jbHvte9IkMI{U&tHK8 zGnFf5|AVb-3WbsvsuCEoe6hMS9YV=IqutnacB`6pKD;?BLQ_PA7tuad)z4Al^O|ZD z^5-uiJw69`(Cn66iu0`W1nZd>T35_x7Aj`E)l5;0nqoF>>T6;50ur9@*H_9-wa(yFZfKv^8I=Y%G^NKSy;3@nLE z9JYHg2;@BQ{;|yU@}rru%0MWnYa}2kU+f{Cg*8Gk>gtLFfcpd6072LyN^ZUIXZIr) zGCvs-tf*q)1vynAIO4_StjUZE>Vu{FU(^MFhtaQ{#n56H1l^Z6tKOcDr}bE9!fSctv#}C3PT4fXb#CJ0|BCP=+*)Wv(N%G$t;RV+7h~lif;Z9nn&A zk*$P-#Ln+IVMZNa)?o;f$hwr&#ewh)8Mg2yu9~yjpT>$DRo~Tw->4QNAZk&Yhb%<1 zlCEq2Ng&c&aM0FE^VgLkPC?wF)(a~`x?Tq(|E?;>rf1uV4p_D=+h*;QwF4Mw z@3~J?^W>;KHlA40%<@m{fj9Xg*Re@6%=z$_KVuzz*d}h(^Fu0F)2Bc(jDiPMu!;h1 z`yVpmU(ne%c6Zm|pg#J)BAHF#_|Z|3RQJTsQ(dn5Wo%LK>s5j3rr_7Ag3yD16AQct z5n7uoh_iq|;#?&2NM`BEJ{IpE)x944B^F=>-tX=Hb~@JOkWC|Yyawc!WsxK0ob~O( z;f&LuLH+J8Fzk+oEgP1CKl>a7lPZvlM8OCX0Wc#>1i+kB9V_+8OQ7aQ#s*iX%NGU8 zUX4!H20HnmNK^hOr1=onMkk_l(d}V9ls8+a+d`oWfBxuF&uetO#sNPRgBX*6kB?{F zB@uXZ0Rlf45%_aicd2?lk=2eW`Gq=?|NHKbWR7Id*)!syMI59YS)(w5hWzZ26AWHs zew8v~!NSH;o4Cqw(UcWSSDUyhij*sot&z&s90)3N-CaJ3T(MUbolv!>VZoTP*1s@@ zI>#4JEc!yoSBKBm#^Hru=zUvx_WgBmXiTOc)vpcp@snjY^qe#A%Hs0OM?GU>)u@H{ z85=bRm>yJ#RsZ{KuYVhpdK;<$?1-nLP@q)_g-PSAc4uPJxQh*}H5>r)@@XWGz?+o= zqqBeml6z33RAZa%>PoIW2{4;E!2$Ew${@9%vd50b%7zzGnVoRGsIr4qWv{-F%9z|) zqGx9wjXm3NA(ct6EFR|RmsgoZ9#+kl-()tYszv2Vl}VxM)T2x(W>F`FM zHIXmfLs#2wh<(~@b#`)f)ip(J9 z;FJhZS0o+`Kt<5_6?7xrbD1cJG&~R(^Q;ZteHInvU%kd)&Wn;a-ZOpTWF@YjF#=O! z!NRUC(X$f92Q8an*RTqX$j-Db4c(fQS?!!xt1`dImZ`| zE&9SZ;~ZZs)$ph1f9+VEs?HqIR5 z15e?1Gg2JYj@1#-+N@TeT=g^|r&hVDQcbosm}pQC4PY>hD2{_I(VdF_YUurc#t-3B zbiIZy$$rxGKPhZNd7clbC?sbuVHU}k<(W$ z)($(tJzlS0-{I6WJ3frq>a0w1S*2pg||4Lc%YOZHF7FWR6SC+4 zQ!Yf)qLh02VnvrMbT2O!7W>t-erTuIs35k3N47*_U}f;lNDQ2rH`KX)owjg$7T{d8 zXIX%4(%YF;G|I|s>x-oTW=;YmV>RDq0z+(M@`AnK)^iWv5;hXERtbR37Lzb?ns+J* z*?+&!!Hz26>(lV!Zt|Uc=|@i>%XmxxmR}>o^G_MQ2<+5R zhq=Ycf%QkyH0RK(LC*i1f*hw&F{wp9e7FD=TqU&xFihS{kO2zws+2vE#pgtln1e|N zS!ruJHBQRTxtyia+O-ZP5oj+;@PRQ$K=) z(`GQn3Lj|YigkvuYYoDTpS5b~k#ofw(JU7XiWmRRg5s-4to`VRojynx^zssGS9CL; zSR1;zfW+EPI7=kfHp;Q=KVy_*B}-Dye@m=wi#2`PASNYd4%iC*t4*x^4m0C4yKgp3 zm2}ulM@uRtsUvNoX$dlo+G`6EYkz#g%`BZQtSGu!lb+@{!{*XIP2_K7fkLCYd&4j< ze|FFO^sAdGZrnNkYos~SFE77;e!AOC;(u-cn8E%DRF$8rh{E7%Lg%RP!KSPE!;+9) z+e>7nvTm<4l~P(dXC-*IRWkf|4Ynj=Hc9BF+ji#rD%y+UM#m`3%kfycGDnMrDmF+{ zd1_cIRlEzYvo$VKYqrK^MsFUZn`A%Nq6WRZiI=ZPZk080d3G}}^NAcpc>fMPzfD`; zG6ur+?W%Q&7g$C|r@G~8H=V7M)?G^(ZT_QeMbYF_&>D*8#6<}=s6%%sfho~KX0)V= zdEa~kX;|DOO9Y$OM0CIuI?Bt* ziq^aa8-QNgW(rL(2`|a*P%Y-E79)@gE=2|KLHXO3ojoKO2M7W5GNA(K*GABqb4Haj}L}gv&LFgkw3erb?apJ;n6LE!Ij?B@)i3;-Y4BWq4%5p zojej6x<8vQiMyhj|2aP#5)%E|oltP!{B$F2w-csF((+5*;n4vFmnKR1NBn8A&Zn6xFl*(j#!TR@-Ai%TZX1X-=qGcF?8Gpl+rUBR;IE3SUc?IA^XddQHf%0g z;KPd_iAwwvqzW;jjz?N-TS?8`mIMC8Psw+a*@Ex(R`a@1%a*!PmW8};jJI6*T>cR8 zz%NVAtWX)8Nr}qG-pFPTBh#FnjP45=u_mLT5{GB5IX0AA$y7mr$nreu-Ha^Q#=@1R z3Rzc8q(ry<7055-944wc`-g1|(O~NSLmmEQ$r>a?WD(IpEs>y%v!}{V*&rdag`F6I zKo6+Az44lsbqSa1ZRPX)v)5!R_Dt$*cO5-7;W1K;eepk8gXLHFFTdMY>t?&jERf%6 zv0$A8R;Gh#37%XroZ&Pnq}hV6o?cs!(?F4t32pkM*Zp5ihf_!ATK5fC>p(8V)@n{Z zXDqDl)=_g4LI?!Z-=XaF+XmD6xmM>EG>U1hVCS%_?`73qu9p;x&HG=-3Q|@S4UE|N zCda~=(2HMNoW4hIwEy(l5>-+jK4n3jLAyRs2H3uP*qLr6DHGcqXi|1a718LaG9G~UNOjc<1>g08bg7aE$s_2%NXs=cGI`mz$=w09I zskWj`Hz#?ZJ~rlG$KTa+UrFCYfL_@PQtP{yuTeRTOll%yQpnRAS?!IBsy9fmQN5AZ z-dJ0`k=Nd6)ZVzbdZST$qgi|7lIo3S?TuFLjdj%HWZxx&ilFR_}%lbx__S@cJ}M-Gt2a7t*&2e z+eb58|8=g?t^4=w+qVU>>G+w%2KkPSxK+nlIe`fztW4CN8Qw@WIvJi#)}9&0c-9Ti zy0vG9E1pe-XH&Ijh9#c$!n0oOnc;_L)8W~4?U`YQXUoE~WwmDkC*s@5dBaDmhL3*P zn*T<_M!$xQer+UygUaP$l*?<+A~sfpXDe#YA~sfrXDe&ZA~rPNBn+>rJ&V{_9iFYO zJ&V{_6P~T9J&V}5C_KBU_Uxswfe!ly;|(U{f<#mL@&fzDT!Ham!qA`&KA#o@9h+oV7@LdC$B~Vq(ysV@K{^RGk{(BDtiT^_)M6mo$ z3lr${nz^lm)nJVBt4XIQ|A#ME@4qrhFe2}LFOErAg|ud_^ImfNuYHS2;!xvt>)5P} z^K=!0W?HPcJb+eVH91Za$e`dT#`FDhTujvLo6CgIsfs^O{UigcGwicfL14ChfMo2A zhZYtb5OA!H@JUqwUG>UCdi@OxKere$HU-C7C4lTRd=DkPpCkkK~{hd6cqnXEqv>t zI4XnCz6c==qdcrT6FushJ8<5$sIfZIvlZCr8ZK#Q{@GgdInt*@|CKMq=54U9CB4R| z;W}u^v(&inq0xXEs*wYE%7;{F7*-!$t9p%5BNCN3TaAZnH8xeF&ii?6tVY+uUZXUq z9NP|B_$+;VqE=%|HMaP7YOF@r+Fs);sv04nv%s-dV_P-0`S-$DjjrXr##b8AKzC?) z)hNOe(R5Mlc&>1wd#)q8-d8EGNenFnpm=_;#-zefCJC-=<=b9tzU?LE+paU;cD?zw zuQ1>CmBF_?s~1aP=G&1mIa22QoZ0W-Z4w}H4$pP=i~19@4V1v6BDKdV8g`+iz>lZQ z%(cIqMUGb_GyKRuzB0Mgu4d@StX*~Xe@C*hn6`-`X(i9^LrpWtO?_1C{|*-AP>WXN zOlScQL8s9I9wJNJYW>X({Qf-?=3JaqXwaqkww;`CUP^;3r3m6;jJn)c8f;sOVJd*N z7_4@R%XnNXELz3`jC_JY;jo6ZlFZc!&9zPVMEh{HHZ0SO)^D!S0ecK`n?(6WMEONU z!fVB9pPpxebB$l|{YCmtb2&D3tthOwq}f)>y*8oAU)BiyKjXn<3oN1&3NBdq+W&kS z)FZP-36SQ8RjK8kH!?UuhqX!s`~PjK1*+&Wk|#nbY5!P??AGwO{uJ>-57HtS6QQKz zKMHADuQHoUVH@GIAHxcpEgvG{sl}ZAFH00^DVS_DI>i(g5mffHs1|0j^dn=1S~}(b zrjNPPpdUKG^(hK$#nktVudCByc0NpsOp09!(D6w@`7L3cdfXJ`i_{s7FGIIEpMRC7 zojnc~{pG8C_pl8e3VY=8n3t2M1dU zdbQk~N))pWR{Wz62i+3Y*W(KdUW5uvojM^2XdS}W25uTr_<*I(BX0dF z$PG*I!)h5}nNYoA_>BybfSk%SW~dRektdp16LNr5J~3X7`AGezDH z{r|dkMh>Wy5RGPWJ-il-ucs=YJ;PObNqI&EFrPTN|2*Jw;AH`LAG84a@(^{?9rcJnj8gqv&qlrmN*tEpcI8hCn|n4hmy4{^RZm(WQWVi;hz`F4I_i7{xVYg(5)f^C&SqzZr1#eul9kIG_K$O}L^^5a)>(e>t^_pTT(<4Mh zY*m$=KNmmi;+9N8Lo9HmPiN`bb3iiYXMHXMb{f!Z^849!6!F%30-Do!Q1UAUa69A_dGV7kmD#A)3Z4KmKXFgaP2}M00iBj|R zLP}sVm3Z}xGdY9$XPUwN{QsoC`e0?LsI0F zUPZoTlB%o{j1C1DIj0>`Q>uD4`Gg;+l^R%JM`X&Nt0}66@hh`G+k0!gqBWYZ5))hD zYA;+J$cD+%^62Lf8;$<$v`5a+*tO7018~KZ)=PtgCns(=A@%{e=QHY)&nP86L|q4K zKsu96iW&q{XN@VSfDuy5 zI3pEZlfX)(+z{tCQ3T~5{D)upRO^}n35ce&u0NjhHB~kgBw6rEmsbLy=-|gACZ}8+ zc-O3pbZvygDf$9iPDCPz0G4n%7w&CHKvFa?MP$&~Hns~CtSKmo_KlJZB;)NG)f}in z{(vCwBAc2~zGqB05;o4HJH$<%C^*?xLxKH+G9fe z&^BXd!VJs_)Kc4&UmF2#YT}Ib_Z`CNnM|XzW4p*`5r(`sK=(!Es}^*juNKgt0=q@d zsRc7Jk^f=zP(0)^n|x5r&+mStL86xgL*PEqN--HABV`t>38$f@L@m3Iqo}Ra8H;UA zKxs4ah=MaRo<#)&0GCugvMVD!BTA8(4NLfLI*1^g?35{#*@d_xaUs<+~u+2l7Q z#gV3?S#B?I&@HdI-OPB`=WObw_rOaqwR6Cu9aO8{ldbACEf(hMfa$*BXilyD+Krk zLz*J}N@X%Usiq{QX!hT_z{jjLGGjKJYE;PAh?d&Dh0R*TpH1)U{q5rAB`MYs*eVk(nZY~ndJAx{x>{(j&*XMhW|Lxdm5 z-iGC7&S|e2-kD9ls1p=K7Sg&XDnX${Ig6V8B?F3@27&;l)Rr&eXUiXDF1Yc((6 zH)Yl0V~26cdWy$=qJNAfYx<`nOgNL8Slq5eb}*q*9Y&>2ntVHT4BJqeq(g752VQlh z&SN(HV1ltA>{vcV6r(StsT%#Lsp5wv>F%T1wAU}KyQZ(IR!@d;!5Z zxgj%|%p~(jphcKK+NKp1mA2HXMN5S$D7IK>i#1wmX-h5kuLa-1Moas%mbTW~istwE zuD#E_=gv$*67k>m7r1lIKKs4)+UvE~-W!?Ut9_D~`7*h@W-{WjO3d-GNX*YX{*HH* zjxI6RlbpE341{V(ka_?ghs50CZp+csK0b-ru!fV~YLLI%(9_MYL=v-7ps&=SpM9Nt z1Z?X6Pm`FT=Xr@4_ED-!%sO$aSd2ToSG44=_~jpmHA&p0Gf|OWtLLc z>d2IY7ZdJ}o6^w&2Ypo6Rz?h(XN762PJIBj(SAqrdX4pZiicPtJ-d_@BH0F3WP0$a zt}xcC>e2A_Ecz4|owpfy_xoeF8BkV>NqrLIFvoUEeyH0Ga#ZkOZY(xB1XNp1Ra_AC zxSXB_`r*^8pEA*E!1ZrkxzH{teRP_NaaULpNCb}$4{6td2G zONzC&zKda&*+J7Vy(MXy7X)kn^)LSF_W$^+ul&Kcf>#k$PNo8Fcfd$%dge%a<|te2 z5u;nv7_;7X+jj$t{i&X_eG9xk7O%B~XyRAyaaJmj*DmKnXRY=lt0A9sge{xvUnb0&jT`EE1hb2qDnOJaR>KQW$;8-K zIbLz4o2h13Lliew;SQ1Utb;|+Jm)aQpIsJ4xP(!c<#3E4<;(h<0hljds9m$Y#xyRL z0L>z>8oj2*F_d+c3X^yJf?)L|yu!<3N8uEhDe{6WL675XHpym1SG^MMY@D1?{HGX2 z={OmMW3uiVP0iq+h*3yTgi#p0=jQpuT$-;r!cqBoKEbd`l&Uj=9G|GTvM|5ZqjP+M zeGaNh_WO)co*18Cw2vSy>-tD{F^W!9$wp!ZUCCr+p|(3VAA%(|!H3D|Qzj}O6PqZE z6O|!Rldy?6I0~1zB}Fw&Jw`kd9WR53gBO)Q7($#Ff3U2$C}iNTXd*PQ2e+x%!2ja2 z2dVzY#~$iHZ{!SqERLNswEDYkkDD{(pnY7NLHS;oGZ^Fa2JnnCh)C~vK=>P zFn)r!h%h2!4BG9&Ol;QNw3|ZRGIT757cGkB1TK;#HEN{GH83ihy|9U`qftDyU>3(L zL&Db}j7~xacDzNRc_tVe@0sQZk=6xFZ<&xFN64IFGu6rFkS@=z*r+C2CW(3SBHCRY z7-)`=pv@&fMe;?~$-4hgR|vdOm+K1dmoc}LH|_#YRH}|vw9Z1(V&1?JYZ$Cw9Sfgj zWPEMtVhtP^OB19$Gpw>fE;FnaAH+6mre&?SYmu8{oM-`xAR$>{2)uDFM(0<{8 z-QLOVC3>5`B6^Sec9*VLv>PxDmhL*?^wGF4w{=!)0^TXgFpA|^<$6S)?mrfH*4QFscavP1I5EU0sVRrq8-SyS%zTp^S z7k}uiTix*COZ2A_LWR_j)UNKLw+Gy1dk*}z!caSzi{6hrU+H9(b!bdJ;qt^$Bg>n; zuLd!Py(Ew9~&T6%iLI;P?pAu)8tSQQ&mrJdV zME-f^Qe~Ted7}|v7+-C-GCn^qa9Co@F#)%Pa*WCvqrB!_=N{Q!VtNr)a3IrE0#@`> zoso-RC&L=aPY*XH==5WBAt}^Pa)Dm(jh19hAAersErDjB^g7=JPV7_}46VEd-3S|G zvnJYv(DV_!%m>O^%urBQX!RKwsC55(4=`&A>381mT%78y$eObZ?6P678>X|blh#k6 zoU))9{0AZag`%^bc(57UmjbdwTO0uGq5XYAY9!QJA~&U-7Z)O)aK}1AA~~Vkl1L@) zz;Vu6CS-9gk905_Ta&0AISJC|>7K(tRh0*J)*&lOnDbl|MYXd>!#RQLfp2{irK6+? zvi6X3r%H@um1yde?kz7Lp)Zc~8ghIaHRLo}L!RMn?PTjv{+4sV?nm!c3lrWJ=7H!oJz%bTWt?Q9Zea)=yH6I`U`8*P&lqq{Fr-gKfeHcG}; zWFL?(Wenz~e(@l-IY>f;7jPD@H>fH@tIEuyQ4R2K9sv#I(ebRacED&J%Hxh8%>)-G zVZA+$!if-%GK?{xI+(-DG>SBdex(N-sbG4Aes~-rtkppa)@;{%&AMWz_L4wvZEP4j zjSUYsHcdw#n}h#NW0O%2aLhH=Q4hhM7Hc{iI2^fQq$Y>GfvJHwj;Ao=!|#n7r+_&t zIcDu=8 zkBr3BCj=bA5mI|-T1c+)@g{K~9*dyagBj-CWheSmQjthOb7x^n86`rS!uVH$C>uF2 zag9~HzEu9U2p}j?JUD14JAp>W^w3)VRU6mf-VUD$y%_g;(r7b8zLn(F+lRuTn zOEs!Plr8ng!3ghdYB)|>XQjUv8SBnrtFecp!b_br_u&S3CA9;8RG9utLJ~So)Y4g! z4{c{Wr4$ALCTKF4_{r%hrEK*j(%`Y<=n&);)3GKtd{A95D3;vB7T0b7)suBliIX|7 z00i7T+&j=is|!t#%K^g%x)HrzK;-#Q4Lkl@(5v-DK(7Zr2zq^*gIjpo5!eTXZ|A4) z@nJv>3cUyj_Tkv=qu>e_M1@2s5m$az{8l@B#dbTIv#Drvm3YlHduT421a7YiFn5+$+kHe=`9?wsdJZfekVih=6(iWDl?Hp;I-M#kV2OLW4lB^&_MzR zvZ45ASVTLx4m`n(*t=ue9LNe!i8zMTTOb=O4Fenq`i ze07^8vm>Hz(dl%Z$z&azZr@b}npHO|OR`uZVwHn0pD3iVOj~IK-m3-N%+;!3$}8 z*#ga{OOwq&5kRyNn2kJ^J7Qgn-;tS=p6pk1GNU1*YkfymM8S zmf@s<-}_ObroKR)he@P7IC&_~UgfF0K%TpN9+pXz$6p>+yIu}rZJXNCw||7fkVDlr zf5V)l4CVPpMdh#lI$9oA3=>c!K_s#APSo~swm z3?O7l$9|7SKx>$}b^+qTTG4?nHcapNBT>3$-p;TYo9?v_L{;8F*{54pvm@z`l|!}f zkILiDrMruI+?1Di`jebX*I3fj{JC`hSeH3CPIMw8A5R48;Tk!ZZqmE%Cc`0e%GAoV zlTMy)x0ERb0>)e*(I!Z1b3>HA^AFUmxoM|-Q={}hA92CcwJ9S?zvhFpZF^Mu86TXb zO$AZSgT#OG*{C`v!&gR6`l zrN3AUiqxcE`nXHHP>Zcm`e`4WVFV)mT_2pPMgJ)Mpbxg$v`ydQgR``@8KuuX?24Kt z7nvx1zYqSkKWO<|Hp+9;mzsqyeZU7-b9p(bYghK9e*)0vXztk+Ju>u&w%lvUB?3mq zm=k+Tn4L4=v=Qi_mmC*-lT>2MPpNz2U{#R2OEPiERx!QX~m=ii4$T#t`$+ zA0E)*GIu@-Ez@BN*CW&<;Eos(7f3+L*v zW7C%DuD+t8cVwtT5L{`5ApQf)5;H}~usR;oJ`-|)?lE=+tm6WcdPjr?OM)Pd`G5Ss zNj~``5zRSjr|O*veP_~Bj@pL@P6}J41Ne(J*JOaFrH0&a8O?9j|&nygnZ@Ds~CI1;Rdt_;p-kP8fLDyCQV+3qQwZ^fC4>~u*##f=7M z2llV+i2r;%tBPrSxilyUDyPmQ#qI!VgR>pW-)!R7?!prFpij+)UR>GN*;1>{s;4sh zP!!aP>2GF1Xh2&c(y+eIZKW%wzjG_E`qaF;GgeV<-xnx}{w@cCC7aEnEy1c;x!3 zSKL7QgbMUFy&DSdPKb%sbUQW`a0s-jtUiX;d+vj{CTP$7YY61NPx|T-hr~rbKIU0y zZ)y>jKHd&UFn-}YX)^;{>$C&K3jr!^%jW@5$5KygK92<7V`y7@K9A-H=goXT#v2xu19FqX+)Lo?xPDUW8S6BL@cL-#cJ+GPNy&G6;8P3@X!$5f7OA1tXH zL?KS48DZA8al(XaPGN+T8z>yFgdvAk6gu`C?zLkN#oF{MbY@6w%K?eiSvIY3z|$G^E*mEW47%p5%}T>ZR09b{}5a-keUAWi%bb zL}8z4Y%8r(As1Z^Wh82hlQUG=;fq}R_zJg96$*#CgIN|jX*Zk42^c?nQyXBwpnZZm%h*vw8u%ET(Y3xfOHDPo zjAuo{i1lEDTfCgus)Lg@`t&pwi0KMFa>n0$m+6A*y?PK`(`G1xp*RPB6^$ifj?UX ze7)yU%CWP@kPBT%MUa7WIvbRqS!@-F@iBlC_;HIp{qg?Bw8jg zKoV27y1;D3V6A0LiReR*Acun-xh$3@X~d4Flph_jlv^=KQ7Ln{Kd9xHSvrKuF0#(y$C#bR9)#udQi20eF5#=t97oy4xH{ZbO zuKG2Jw0?1~vvWY1vvQvVv!q99AS{O_zTICtk0z#L@ELOn0zK?qOIsL`$C{l-joDp( zUD_w|I>yl^>^tn=UJ@t9@KI3t6hwF+I=}JZBd@ z+^=;2zSP>kJ?(;th@3;Vu=h(kEu}4&Cpx?es>8Ge?R9DqfGeb}99GD(0H=a3AeW{V zvL46hh)fu|@#H8cb4e&}Pl@KpBhgn}MX-aJ4>ec|k2VyvqWCW2>POI=%!J;eL`@j@ z%+Bp8*dw20h8hJcq~+8?I$v;q6g4?t3$D~G030-X&Mg%$D^P-gC@JWnHH~O(>uvX0 zw`WPsL!05tHP*dZh!3_L8?A}gsNZW_$2w4d1ssSKlavBQSat4gbFCbjyY^6UO@f}s zCSa|RFzst(_wlUJ>2ywj66eXo3iR%5@=OS#X&gu})M^1Aof}yikxN(2gop{c z12j(0va^qrlLI~uh6q$3b!%G0kF-`2lBAUc>%~{qOOOyl3gH8a1NaBKL?4PQBR;T* zN-9c@sR)JjqBzOHHHt>MM!~TA)Dl;oGMuC%%bp8%C2--9Au=-|GS!f`3IEZH8~dir z!jT{>HA8_W{BxJvp;0l_Br83}8|IG~9aM*JAi}KIYPv~N=-i|zY|utNUNaGJiiHq& zOq#-ln7Et>*p4(MOOepSv@(obrjqGm=iGpQ)krsJmLKtB%ax*@{S@mEDq0mR(i~fZ zm^#PTjc=;+R)^H&pAM+LSE~al=%-Z2cWZTk^FO6JzFn&W%KcNS<6moaK=pn~b^N>P zIBrboda*La>C|1whOO&SDqpCF%;@K^o)va`27R394IS(n;?GLXZ=97OI&AudtIZOl z(&R}F8yOstF%^u1_Qm}33E0*}f=ua}K$B`DE2ClUP78Alsxd%B5Tt}gI)yMU7fmrh z=?seWIv9*MX)zOh#@-s~U5$}SKp|USYCJ9wQwxlLbviBz)z_D1lQ+s&Y26{uq&rbR zU~FE47TNadGt?9~xuU=Ok01NHqGS$Vyy<%K$)V&jk^>de+_>^PVfod(AFGu96~kFF zIQ_<2F73{)a-&EUWX*3bzXoCQ*bDyQu@{WXStPN-i&xfmsk%80L)O_$!^p%Ic4lho zxHz4?uIIlQHeNqSU7c3 zrx}`T?z~G(?-q_|sOgQ#V*ffdYQ8nTWukmhHa}k)ocG{c0{{{*dVQhO3S`r>$m_bk zq}X>P0AX=BMgX;DDUS<4W#yU(Aem|=0Z_YrJ`NB~?C}(9<|Lq-s)z}oV?qi*xEmb- zgQi(|$AUpzzideg26s=rolu0Su?;>!cWjx0V2O(h&i4y32YD zQ*36I^0+W)mU2x55Q|8Y0q6|-d>kN}h(TvsGbh2IvlKB7bUI+M8E-x;+^sBy%Vr2k zi+6UGxnWS$3y;vG#g+g#i=b5(l-N}Q=rp<`s8vatkyUhHG{+e0@HY{-7MKJF<+EPm z2%N3dmC|T;Mhe=vkATSR{<`KIm9TqBa0^WfBSrxsh6r9WM$*~4hZ>R@$)nH_^?;){ z8lrXLL@T{&vFmJFIFb5~56I)-$xnGRME2pi+J}QE`)Nmd=Yer4?iv5#K=wfdK0T-c z{B;g!e2TLWut^`Pg|s^GWEPs7ufSQ#SSzMPVSt?v=x=b~++d3cMtnJ9K@bEUbx^Xz zse7DAZ6;h@PY`clP+-&ovB5FmJ`Ck!liheYa*Kt}LX9p<08G=D*2s2|u|n2@eYGZ9 z?6;Q5C`2^~N;>OW!|Yl{-r68zkMTugH_3{|Wuq%sG?b@YeCM#Bj^|FVkuO^&QeK;&3uE|M24@U^3h>e*6R)7&`z#{o? zMp1wcfi>32k;+H_b5M7HSxDAd^D))s*6ClEa2TzPoxjo8pE!dmUX4VsJV5%Ip;oS5 z`cOjhP7*=PS!uN{dLos5^+YOD&(sCi?(_*OBWDtR%okc~p3<91_-sk>90wu*2gr!& z_eh#9O`m_v51mG9clp>o2|o@t9MzNXQE(J76g-{Wlkm>JbC0L=@Zsg(8a4I;FHiwqcuamY}%e;p0r9x3Bpl_twK?ib=Mcw z-|=P1vCPmMoYacIgmMjUD9jh@`U*a4DM7_P>zbH`^|t8r*#dV{V0Q#DL?sv_+T9UE zYv8qXVg+|;XsckPV(0UiQ0(`7&ubmjWxkQL8^A`~G)t|Ijx-^X^A(Eq8$T*+{Wh7F41Hx}jIw*j#>{ zBPVE~?#g*LI9kaufBK5~%i}y7nT|I*Q`);+!NvE<5b1}KB-_&;9R9h!bkDBz&0580 zy~d&;rnDM}#h1@Y!tF_5K7(n6PSPTu=I8p7;PP3Pp6fFF*FNs4pgo-|E70o7!LWm2 zrKPrB<1T9p99c$>25%^Rmr?-)D@n*u`2rnH__5VK3AQI(JSO5oi?&G&FLC2#CAC3t!H_qaj< zI#LRjokIDUj;P|+aaiOkXZupVN>Bb6_)aHFoo@|h~6U-*%=MDCU>@sWUf}}f?rON*o3YJ>->Ih>>xA`cmmz)EVPjh;M`Z zVYH)22#RxoCN6UL8N1WME=YrY4lbRg2=19ACZvWWkX$J5k){sw>kf6`1jRC-MKuB} z%zC^_eG_dM4|#o-j;5(A%Apyxfp^*ozOQFi$p?d1)vTej;h|oLHV(oybR!o~Bmp@$ z%tFd%6b(U97lX>DLjVzbnxVxxB`x$Zm%N2d2#r_{29xZtroSfJZjiHvy-hisjZ%hq zq|+TS!rnW&Rh z)B#z}z6s?;TYYj`^E6SK4^%F8z${5baBZ|;YX}TX>ORkr>kL$zWyT6bRlXG_Wfjn@ zeT=*{ceJI4C{*tS4!hJl@rd4P|Fdd|{^@*V$^~fb$G#9|1mtqVEVL>6XnSSL=|1Aq!)K||A5fH?W|Karw^n^q@s=`u z8meiuTb~aqATFkWp0$`~75J);(X*E9IRy^+7(HvrexSg2e2kv8WMe-h@I4=+XD!)& z#XRq0^sFVjQ!)GaqqgZ;OLn&ccla1RYsv1)$K0cUzNmoro9#6mw94FZh6-wU}oW z_^OZ5vzF{R1rGTbJ!{E+pul&0jGnb*V=&G1dp<_bTC)9$dEUq9Sxa`OV)pSz4b`)j z>~00_@G*MUlHH@gT|P$7TC)2Uc#n_KvzF{31@84Rde)LXqQC<_M$cNZ0}4FsWAv;g zdt8A>eT<&9WKSyan2*u3mh6dqj3exh`8Rn&(UFO+(DG(BS|i;%N+Jn45K$`{<$?OM z0D!YjwB1B_q*)tfO-|Sef8bCOk~~F1tdxv_a^zkzYT02aDK~+hK;)XX_aSH((&s4% zLNzAZBmFX{d{feOQ2DzsX+wWX5N<_@nli$p4K&(|!BGw~uYY=kL!#YtE)TQ|dhS-p?a(RMk`YT|f*IEViB-OmD zCV>vAj4itZz;ZBfW10_#)9?|+94a9HnPz~gj;Ty0TB-bcb@`3oc|M!ZFNT@R%!t}~&}5DPg#@iZxLhA^MDzHw1k? z1(mN#sd9CB<*Fuwu}vnc1DG;alPV3)VcRPWnDw2~V1fvyKD7jZ>0`aa)Ql*WeL%4E z=!?I#8DRLZA;V^x#m4z1z*h&dT<*7Y^Sr&l7AE%!^Ei zZRuM-i;M6WITlWniW6*X*07;QlRC~OH7<(oixxSIb~wy}LQn-joa$%?$B5&@u)Rh; z>~2hlMN@_MQxVW}w8I$}@PGESBS)f0DcWI_gAymw4r}q3-5kR1!R2NIc6XOA*VRHW4c=c1g*3=C z9zh$`&J#i!&hV3_$)k-b3~3lykG>jX1b2yq*<7S0g;%moLj;g~5?ASrfjq+{W{hdf zVuB+6EOCnX|_nR?{6H+M2)y*Ytho6&eOASKF?0V$ZwdNXBu>Vlch84N@h z3?xY3U&R;(m%%KgwK#L>rzKJ4i?&D4Ps;=!ZBG?Vq!84zkyq$7$2jWN7iG6c&DJgfLD?J<@5`Ir~Vpu_>db-O8Iq{;t#~oQ72}P{TP~MVsLV0>0bKtup*D+?nAg zOz~mA0h?)N_=#$UA8M3wKJo@Ei6L$uYt|ijHBdKoy=XQy^;Omg!wQnqCK({)IZy5g zqmdQ_Wq1%T2ky4y;LGrrPB+!fL7noWv+h&Thz*jTLe!R96;uK@q4Eg>`^85EWX&LyMc9 zI_aW3W--_TmYCiv`gNB5aS~u_`Mo8!IzXEaQWOsvmyP>GYxLjbZ3faTI>H_uFY z0MJ^(kG(;}$t9qCCbDFbN+z-tGCpV~Sm`tfD4=(41%u+5ds@5z5hbIObn@bB5=tQr zqBR-mH~%!FbOAxHFQa!EKX`IB(_r8G(K zqlgR)Sb3c~bt`ZLy~B*IiNG-1|xUIH7@F6~KqNt7Z9jC96zOZ+6fgidLG26q4VUlT{PliTBwq$%Ah^^ z)B!p}8nDJt$4N<+=uBj*fz}oi{Xt8cNk?7sqdGsm zY}Vke3^LEc^MkYM**e;|+Q(v`o10KcQ9Ei7wUd007N*rT@iRUVYD&jA>qG9IO%$?0 z^Acqu-8&SioIofr;@xO6h3HGTu^1gf!?_Q3Z~^V^6hoILC4W{e zpV4F6HLA5jY2f~GK-?=M8A$QWLzpmjc?8`^y zvmH-`^cL3m?0OdIoZL7G1Ls%t(wFQzMtH>=19heVLDz6-z%Uxf`;Ge9IZExUrmbN~ zCexT5VQGPoI>KTtAE%v{YGOHrj}!bgi^;+C)f^}oVZrat!OZ&9Oe@t84?PW}bxTW5 z^iB^4Jx?1wjM(9)T#_;VSgXpC^dtZUMb)uBrfBdSiOCq4_M~WmYwFL1%|2QF*R+3Bb3UwwhBw z$ULD~ljWH1l}`Y!u>7X+G^Wk*sl zr!CIr0il|aKJ1F_)YeOwrh*Bqz~-zArjPn0apBhV5%+E=26!ckPYXpN@KkSJ8CN7g zBgCT-@Hs1-Su1Bj+77*lSb@ZI1~ToOE091W3IdGgfRnnuQQKp=hBg@8FJLN)m|c)u zI(rCE(=E5NThvHmti);w#y(OV#v_IgGpKbAPY!})5wPZ{fnNyWoa07pyafN3bWY82 zW3C)G*o{v8Kh5wa>`4D zwb~9AFaLe$Jn|aAYrr)XYjS}8{|io=y*Y5YQ%a8n&U{Bj6&R^C+vi}RW-eL3;N=ca zQqF?O_CM>@wm;i+6j8Hzh}hTwwerb=L*iC7g52nXAT%B}7t z33ioF;x#>8(Yv?v_pEiZh)pCuq&My=gDb&;0Ku0F_;%MK!d>OEk3bwNpToP$ffGPD zlxn%zM%7G-D#<8h`Ant5TyTWwwp_IN(vjBLq0||}k@C+Na;r#VQ&!&iG$kviuk4=N z?Fr(!=Z$^k(;=p6Zl%)>uYw9YDXi@KhtKq``s;3k0a#}}>?^NUZWR69Yn(DCx5sh#PBBH90T0ILZ?~QcoAwFvH8p0GV z+9UH$Sk0ig!dA)=+t?qP07`++|HvL1E?BBUqzeemjDJgq3$^;SVdUh~);rZpKqZ%jCIfS;;S6#FdP9jZx%qRY!6ZO0x*9AI&Q#px-x`Qbe zs&CCz+_s}0h`(;EI~+{u;?7eJjl97FF~O0 zfIiw+V^lh2si6Vw7NU{a);?VEvT}K5`}qso6LwL{c*(4+ZRJOlaMftA_^z$|eho@}3_C>EG~S7K|>?G=Kg}2ZD53dgqtD48RcEK?=AL z#^Pf_!cw%xND>}A=vuluNK%)!By>c=NTG|^oz)E8YQopDvq`83iq!t24W`$KV56z1 z2sluL7>Tficw0!PYNbNOQXny6`m7jXaN!&jK?+_EUYktj@~8~mLLD)(YsJqrtU^PX z!fnyfgfC1%sv-uD{<0UTWtpP(^y^X#gfadUx`R zS|Gxl?h`zhl3!~Iq)DITL**Bk>3z%{2S^SevE$qvbR{MDPC?pmZL&^5;H^_SNm}wK zzy*7d8W>;KKiH$_sTe?ZCr;LiA;?k9&sX@Xq((S|9Y=E={|ZU%Z!wF9$l*qbynXAvwju?z~0uNhHXsj%&v3!x$2AVS4HD!jCC817DbOoJw!|(sQ zqcq%FY;7Oc@Xwa8O^O&*yc6FV1)4kC-4;@4BPTA%tByCUqOb>BT^6W;W=6aq@Ml@jP_l5=qCdaF)kbq`wP2ogEzssD)zb!P zLP?--*5&GFSJ=51iJf4Pv<<Ykh8N*LQcx2P(9p5)QuP?oPTT;WV#fwZ0B**K^{|CDs+g#C%aJP=uk z&OFv?HM^@hCJCopqXk;ugqw0ePhupF%e%iN8Z;yI2bDqUa*>V_&Olzwoiqwog_lDu zpo^Ca3kmBuC1KPhAX;RosTUTdlK|RNN6T2tX4b)^mKc%)vjo`yE3eK))@Qmx7nH(b z?fe||N4zgyM^Cj&z)mZqG+I(Z0-p<-KE}}prbjh#lxJW1ZMp_vb!9^Ku5ByJ_;lB| z)$cCewB_m*w5rKnr?AFeMdDv$Z#sJYN_*2y43~+pHrYiAS>fX=a$C4uTTCBpTFc!4 zs`JSgu5)9pPFK5_sjFT4Xf896)}4`uL67l8%+N%XC4jMpAc~X~-N{4@wTKP|2%!Z? zgaigE125oh3+kR|OGtvikx0(d(06Q$8F6EL*%)dE3<JTGjwv66U0L~0{9+59VbSYMLPaJ7y0}}8p@J6Wb)Nx_LF#dfGU!HaEYq_jTV|VZ0 zzaYMBtBsu-Md6DZ#W}T6lw5L|;CScP4q&mv;AzKvHOU}UFuCN!#fh(;kT`MT_3b~Q z`ZgkWnTVx@%j`dqd~kWYU2t2FVKx26R{_x3mG6sChv{b&IwK3cryiGnA8Ada4q{t! z({z{1Sc#VQp{Trkyf|ypsmPyX!>voQYBkb5(1(g6~8+cg^C-uL?cc6(xU)plg!KqEcFN^>`~G&tD3)j z(;xV?;}Ir~waF$x#tJ8r746sz@#WclK+IY~pdiEI+T@q);5RfQRTeQ-oA`we#-uWx zO+b!z(5+zKVg%ra-k+j3PWdJ*vm2$(SSubf78*deh;TmTV-U4zx{6Ao;SO);Jf(h9M zJj|PksbQin+&APPXlw%P7!QBvE0Kf02Qf5kl3@seBP7OjWTYYNUR3Q`>+KS1urw?h zY_1||Fx9e_q|uY9l>)4ZYOZp7KY{UW1?n(=9p-PTwZbLvScUwtLVVv4^i0-FHBxS; z;fS;9pwyUEht7nR!y#gTZs8HQAl#Bh@>_O2lTV`T6vzEGCxq7#ZI#BX*5Y}qviRn7 zXa7RwIONoBSweR+>@drx7Cp_scXnwmLa8>e#9TXes`6 zN3Jr+(Hn+>2FbcW2gY#rA)DK%-WX(4=rh0a<9~SiBTs(z{#(m;$5G+d=oZ95?BYm+ z%s<&`Ad3Y-e?icMG9e`BEQ(SV)I(F^@Q0a^?pM<|$1*Qp0w|@|i2;bs-N9)*mi47i zn6iveloaPhT0=0VbsB7`qA$%NGV`D{txB;VNVN0NX=Zp(C2`W{0oP{O*6z{FdZbyjbZp@l|ubP+a~xN~n@ zJMOh;w1Z;YPNMU_q{!ynfPK}A*IToL|Ib3 zMPh-WqB&0)>J%B^-6RmueuFl(c&1|L_` z%r>C*K(;!-C*i1(`XGI$2qGD<90+7V`YuO3^`YDe-O`|%&J|o*emsh>Ppxa_Vp&XY_XUMxHnRy&RoC3E8_bd}D+G}8NN3bh*FU@<($IC%GrLkg8|xiOAk zBM%m@lxFe(1@heh0E`Aj=8EQYaV<3PRRiu60$arW)zA-NbBAT(zNOkA^1%i%1f~%) zRwfq8SP-;iB&#!W&=omQ(`Tf23$W^0zC}6}Kn;>_GVIDFsUt)-!kn#I8{ton8)0h* zRU<7hN)i_wQ8~i+zT4H&2$=t#@x6Rf@ zAAj)c&rEwA_@S2Jc4n3+(H5arEx}l4{r#3VcNU5Ghuc5)^;5_0v*~*%*vV3U`eho> zwkT%Vgw*%k_1kYfLy2{T$5B!vu#@`nkKXeV5+5aN4)G#Ng6P-I6Y@YbO-YaaV5Hii*pYjKI=82 z%4-+=0`u(T{rlE_@&mX1*4sW@7!&fSZF~;a{@d?9{pt6;?~_mb%B^dI%EyICT)?b| zzj@|EU;d~2{`?oePryZR8!p97mSxR$i

&i*D3rN&D`(O3zLtpLua|b0=eb&4V|0 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 E2YHN6-v9sr literal 0 HcmV?d00001 diff --git a/integration-tests/contract.wasm.8 b/integration-tests/contract.wasm.8 new file mode 100644 index 0000000000000000000000000000000000000000..a9c4a7b2419d5408d8b20dfdbb991c8fa42b95fa GIT binary patch literal 132769 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 literal 0 HcmV?d00001 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))); } }